Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296741
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1507
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-23 15:58
个人简介

喜欢Liunx,C,爱好嵌入式技术,爱好Qt 等跨平台技术

文章分类

全部博文(51)

文章存档

2014年(1)

2013年(50)

分类: 嵌入式

2013-07-29 09:25:48

语法区别:

C:使用printf、scanf、 gets、puts等

C++:使用cin、cout

优点:

C++使用cin和cout有三个突出优点:

1、简单安全: 根据操作对象自适应的,只需要使用>>或者<<就可以搞定一切

2、支持用户自定义类型的流操作: 需要重载<<运算符

注意事项:

1、要使用头文件iostream。cout和cin并不是C++语言中提供的语句,它们是iostream类的对象,故使用的时候必须加上头文件iostream,又因为cout是std名字空间中定义的全局对象,在main函数执行前就已经构造好了,只管用就是,而不用在定义对象等操作。

2、二者效率不同。至于printf和cout那个快,根据数据不同,会有不同的结果。但是百度上说做ZOJ时,使用cout会有超时的情况,这个要注意。

3、不同类的输入输出语句不能混合使用。cin和cout搭配使用,printf和scanf搭配使用。因为运行机制不同,混合使用可能会出问题。

 常用语法:
       cin>>变量/指针;

1、数据流向谁就指向谁。(记忆)(键盘->内存)

2、变量可以是一个也可以是多个,数据之间可以使用空格、Tab或回车分开

cin>>a>>b

cout<<变量/常量(各种类型常量);

1、  数据流向谁就指向谁。(内存->显示器)

2、  变量可以是一个、多个、也可以是表达式

cout<

cout<

典型问题: 


  1. #include   
  2. #include   
  3. void main()  
  4. {  
  5.          printf("A\n");     
  6.          cout<< "B\n";       
  7.          printf("C\n");   
  8. }  
  9. 输出结果:  
  10. A  
  11. C  
  12. B  

  1. #include   
  2. #include   
  3. void main()  
  4. {  
  5.     printf("A\n");     
  6.          cout<< "B"<
  7.          printf("C\n");   
  8. }  
  9. 输出结果:  
  10. A  
  11. B  
  12. C  

原因:printf不使用缓冲,输入时直接输出到终端,但是cout使用流,有缓冲输出,总是在强制刷新或程序结束后才能显示结果。

cout < < "abc " <

endl相当于输出回车后,再强迫缓冲输出,包含flush的作用。

通过cout分步执行可以看到,执行cout<< "B\n "时(这里没使用endl或刷新)无内容立即输出,一直到程序而执行cout<< "B"<

则cout分步执行时,到程序结束时或使用endl才输出结果到屏幕 而 printf每步运行都有结果输出,有利于调试。

因此,调试的时候,语句中含有cout < < "abc "这种的时候,要加上endl或改成 printf 语句。





C语言和C++语言在语法上面的部分区别:
1、C语言的定义必须在最前面,C++可以在任何地方定义,比如
for(int i=0;i<100;i++) s+=i;
在C++中是正确的,但是在C语言中是错误的
2、类型强制转换,C语言必须将类型括起来,C++可以将变量括起来。比如int(a)在C++中是正确的,但是在C语言中是错误的,必须写为(int)a
3、在VC中,int是32位的;在tc中,int是16位的。VC支持C++语法
                                                
共享群里面的上机手册中建立的文件test.cpp.
各位老师在具体作的时候可以建立.C文件取代.cpp文件。
这样子可以避免很多C和C++的区别。例如:
变量声明的位置等都和TC中的语法一样了。

C++是C语言的超集,虽然C++兼容C,但是C++中也有与C语言中不兼容的地方。
一、变量声明的位置
    C中变量声明和代码是分开的,必须在函数开始处声明;
    C++中,变量可以在任意处声明,只要保证先声名后使用的原则就可以。
二、struct结构体方面
   1、用struct定义变量
   struct mystruct
   { int i;
     float x;
   }
   在c中声明struct变量要这么写:struct mystruct a;
   在C++中前面不用加struct:mystruct a;
   一种兼容的用法是:
  typedef struct _mystruct
          {
     int i;
            float x;
   } mystruct;
   然后用mystruct 定义变量。枚举型(enum),联合体类型(union)也是同样。
   2、在C++中,struct结构体支持成员函数的定义,C中不行。另外要注意的是,C++中成员函数的默认访问说明符为public,这一点和类不同,类的默认访问说明符为private.
三、bool类型值
    C++中有bool(或boolean类型);C中可没有这样的bool类型,均为数值类型!需要注意的是真为非零(如:1,52,-5,-2等),假的数值为0。
四、注释的不同
    C中的注释至有一种 ;
    C++中的注释包含两种和//。
五、强制数据类型装换
  C中的强制转化形式为:(类型)变量;
  C++中还可以使用:类型(变量)的形式。
六、赋值
    C语言中的赋值只有一中即:=;
    C++中除了使用=外,还可以使用()。例如:int  x(5);就等于: int x=5;我想这种写法是给C++中对象初始化时初始化属性是对象时使用的,那么对于基本类型也可以使用了。
七、函数
    1、C语言中函数没有参数默认值,在C++中函数有参数默认值的概念,注意参数默认值与函数重载的区别。
    2、C语言中函数的定义又两种形式,经典形式和标准形式,C++中只支持标准形式。
    标准形式:int string(int x,float y){......}
    经典形式:  int string(x,y)int x;float y;{......}
    3、C++的函数必须先声名原型或定义才能使用,因为C++是强数据类型语言,在C语言中,未声名和定义函数之前调用函数是允许的.
八、运算符&和关键字const
    &运算符最基本的含义是取地址,C和C++中都支持这一语法。但在C++中&还可以表示引用。有了引用的概念后函数调用可以作为左值。例如:
    int &rtux()
    {
      ......
      }
    rtux()=5;
    以上表达式在C++中完全正确,但在C语言中是非法的。
    const关键字要注意一点不同的就是在C++的类函数中,函数可以声名是可以用const,表示这个函数没有改变类中的任何属性。如:void unchange()const;C不能有这样的生明。
九、extern说明符
    在C语言的某些版本中,可以在程序中多次使用一个全局变量而无需使用extern说明符。但在C++中除定义全局变量外,在其他模块使用应先用extern生明。
十、void指针
    在C语言中void指针可以赋给任何类型的指针,但在C++中,却不行,但可以先进行强制数据类型转换,在赋值。


阅读(2301) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~