1.C语言其实是有auto的,并不是C++才有的。这点要记住
2.未定义行为
简单地说,未定义行为是指C语言标准未做规定的行为。编译器可能不会报错,但是这些行为编译器会自行处理,所以不同的编译器会出现不同的结果,什么都有可能发生,这是一个极大的隐患,所以我们应该尽量避免这种情况的发生。
这样的例子有很多:
同一个表达式中有多种运算符,
同一语句中各参数的求值顺序,
通过指针修改const常量的值。ETC。。
3.C++中的常量
符号常量:符号常量可不是字符常量,可以用一个标识符来表示一个常量,这个标识符称之为符号常量。其特点是编译后写在代码区,不可寻址,不可更改,属于指令的一部分。#define和const是定义符号常量的两种方式。 逻辑型常量:true 和 false常量分为六种:整型常量、实型常量、字符型常量、字符串常量、符号常量、逻辑型常量 4.无符号和有符号整数相加 有符号数和无符号数进行比较运算时(==,<,>,<=,>=),有符号数隐式转换成了无符号数(即底层的补码不变,但是此数从有符号数变成了无符号数),比如上面 (a+b)>0这个比较运算,a+b=-2。此数进行比较运算时,被当成了无符号数,它远远大于0 5.联合体的sizeof union(共用体)的各个成员是以同一个地址开始存放的,每一个时刻只可以存储一个成员,这样就要求它在分配内存单元时候要满足两点:1.一般而言,共用体类型实际占用存储空间为其最长的成员所占的存储空间;
2.若是该最长的存储空间对其他成员的元类型(如果是数组,取其类型的数据长度,例int a[5]为4)不满足整除关系,该最大空间自动延伸至可以整除所有元数据大小为止。