C语言代码:
int a = 10; //赋值,当做定义 int a; //没有赋值,当做声明 int main(){ printf("a:%dn",a); return EXIT_SUCCESS; }
此代码在c++下编译失败,在c下编译通过.
2、函数检测增强 ,参数类型增强,返回值检测增强,函数调用参数检测增强
C语言代码:
int space(w, h) // 形参没写类型; { } // 没有返回值 void test02() { space(10, 10, 10); //形参与实参数量没有对应 }
此代码在c++下编译失败,在c下编译通过.
3、类型转换检测增强
在C++,不同类型的变量一般是不能直接赋值的,需要相应的强转。
C语言代码:
char * p = malloc(sizeof(64)); //malloc返回值是void*
C++代码:
char * p = (char*)malloc(sizeof(64)); //malloc返回值是void*,加上强转4、struct类型加强
4.1、c中定义结构体变量需要加上struct关键字,c++不需要。
4.2、c中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量,也可以定义成员函数。
C++代码:
struct Person { int m_Age; void plusAge() { m_Age++; }; //c++中struct可以加函数 }; void test04() { Person p1; //使用时候可以不加struct关键字 p1.m_Age = 10; p1.plusAge(); cout << p1.m_Age << endl; }5、 bool类型增强 C语言中没有bool类型
5.1、作用:布尔数据类型代表真或假的值
5.2、bool类型只有两个值:
true --- 真(本质是1)
false --- 假(本质是0)
注:给bool类型赋值时,非0值会自动转换为true(1),0值会自动转换false(0)
5.3、bool类型占==1个字节==大小**
C++代码:
int main() { bool flag = true; cout << flag << endl; // 1 flag = false; cout << flag << endl; // 0 flag = 100; //bool类型 非0的值 转为 1 ,0就转为0 cout << flag << endl; cout << "size of bool = " << sizeof(bool) << endl; //1 system("pause"); return 0; }
[c语言中的bool类型]
c语言中也有bool类型,在c99标准之前是没有bool关键字,c99标准已经有bool类型,包含头文件stdbool.h,就可以使用和c++一样的bool类型。
6、三目运算符增强6.1、c语言三目运算表达式返回值为数据值,不能赋值。
void test06() { int a = 10; int b = 20; printf("ret = %d n", a > b ? a : b); //a > b ? a : b = 100; // 20 = 100 C语言返回的是值 }
6.2、c++语言三目运算表达式返回值为变量本身(引用),可以赋值。
void test06() { int a = 10; int b = 20; cout << "ret = " << (a < b ? a : b) << endl; (a < b ? a : b) = 100; //b = 100 C++中返回的是变量 cout << "a = " << a << endl; cout << "b = " << b << endl; }
由于C/C++中的const的内容过多,我放置下篇文章中了。