-
全局变量检测增强
int a; int a = 10;
上面的代码在C语言中不会检测出重定义,在C++代码中会检测出,代码会报错
-
函数检测增强
int area(w,h){}
上面的代码在C语言中只是警告,在C++中需要加上参数类型和返回值,否则会报错,正确的写法是下面的代码
int area(int w,int h){ return w*h; }
另外,C语言中参数个数传递错误不会报错,C++会检测出错误
- 类型转换增强
int main() { int *p; int *x; p = malloc(sizeof(int));//在C++中会报错,需要强转成int* x = (int *) malloc(sizeof(int)); cout << p << endl;//0x1031760 cout << x << endl;//0x1031780 /* * malloc函数 * 找一片指定大小的空间,然后将这个空间的首地址范围给一个指针变量 * malloc的返回值是void*,可以指向任意类型,类型需要强制类型转换 * 这里强转成int类型的指针 */ return 0; }
- 结构体增强
struct Person { int m_age; void plus_age(){ age++; }//C语言中结构体不能加函数,C++可以 };
int main() { struct Person p1;//C语言使用的时候必须加入struct关键字,C++可以不写 Person p2; return 0; }
- bool类型增强
C语言中没有bool类型,C++有bool类型,并且bool类型的值可以赋为int类型,非0代表真,0代表假bool flag;
- 三目运算符增强
int main(){ int a=10,b=20; cout << (a>b ? a:b) << endl;//20 return 0; }
另外,看一下下面的代码
a>b ? a:b = 100;
这行代码C语言编译报错,C++ 不会,区别在于C语言返回值,相当于20=100,C++ 返回变量,相当于a或b=100,注意要加上小括号,否则只有b有资格被赋值