基本数据类型(格式:类型 占内存大小 …)
- 整形数据类型
- 基本整形(int)2/4字节 一般在32或64位下是4字节
- 短整型(short int) 2字节 注意 int 可以省略
- 长整型(long int) 4字节 指定该类型的字面值时加l\L后缀 注意 int 可以省略,在vc++6.0中 long 与 int 都是占4字节
- 双长整型(long long)8字节 注意 C99所增加的,很多编译器未实现
- 字符类型(char)1字节
- 布尔类型(bool) 1字节 注意 C99所增加的
- 浮点类型(该类型的字面值默认为双精度类型)
- 单精度(float)占4字节 有效数字6位 指定该类型的字面值时后缀加 f\F
- 双精度
- 双精度(double)8字节 有效数字15位
- 长双精度(long double)8/16字节(根据不同的编译器系统)有效数字15/19位 指定该类型的字面值时后缀加 l\L
有符号与无符号
- 只有整形(包含字符型)数据可以加signed或者unsigned修饰符,实型数据(比如浮点型)不可以加
- 如果定义变量时既未指定为signed也未指定为unsigned,则默认为有符号类型,比如int a 与signed int a等价
- 表达式运算中如果同时存在有符号数和无符号数,则所有操作数应先自转化为无符号数,然后在进行运算
- 对于字符类型在定义变量时,既不加signed,又不加unsigned,C标准并未规定是按照哪种方式处理,由各自编译系统决定
运算符(容易二义性的)
- i+++j的理解:由于 ++ 相比较 + 运算符的优先级较高,所有i与++先结合运算,然后在与 j 做加法运算
- %运算符两侧的操作数都必须为整型量,否则不合法
- 强制类型转换符 (类型名)(表达式):(int)x+y 仅仅是先转换x为整型,然后在与y做加法运算,最好表达式要有括号
- 复合赋值运算符:x*=y+3 等价于x=x*(y+3) ,因为 + 优先级高于 *= 运算符,所以会先运算y+3 。在a+=b类似的这种复合赋值运算时,b是包含若干项表的达式,则相当于它有括号
- 赋值运算符的左侧应该是一个可以修改的“左值”,其意思是它可以出现在赋值运算符左边,且值是可以修改的,不是所有的数据都可以作为左值的,变量可以作为左值