第二章:类型、运算符与表达式
数据类型及长度
-
char:字符型,占用一个字节,可以存放本地字符集中的一个字符; char类型就是最小的整型
-
int:整形,通常反映了所用机器中整数的最自然长度;在32位机器上int为16位,在64位机器上,int为32位
- short int: 短整型;short类型通常为16位。
- long int:长整型;long类型通常为32位。
-
float:单精度浮点型
-
double:双精度浮点型
- long double:高精度浮点数
signed与unsigned可用于限定char类型或任何整型。unsigned类型的数总是正值或0,并遵循2的n次方定律,n为该类型占用的位数。如char占8位,unsigned char类型变量的取值范围为0~255 signed char类型变量的取值范围为-128~127
常量
-
有无符号后缀U或u
-
整型
- 十六进制整型数前缀0x或0X
- 八进制整型数前缀0
-
float类型后缀F或f
-
double类型无后缀,后缀L或l表示long double
-
字符常量:值为字符在机器字符集中的数值
- 注意字符常量和字符串之前的区别,例如:‘x’ 和 “x” 是不同的,前者是字母x在机器字符集中对应的数值,后者是一个包含一个字符x和一个结束符’\0’的字符数组
-
枚举常量:枚举是一个常量整型值的列表
-
转义字符表
-
常量表达式是只包含常量的表达式,这种表达式在编译时求值而不是在运行时求值。
算术运算符
关系运算符与逻辑运算符
类型转换
-
转换类型
- 自动转换(精度提升)
- 强制转换(精度下降、数据可能丢失)
-
char类型转整型注意事项
-
表达式种float类型的操作数不会自动转换成double类型,因为使用float类型主要是为了在使用较大的数组时节省存储空间,有时也为了节省机器执行时间。
-
当表达式种包含unsigned类型的此操作数时,转换比较复杂。
自增和自减运算符
- ++i:先加再赋值
- i++:先赋值再加
按位运算符
- &:按位与(AND)
- | : 按位或(OR)
- ^:按位异或(XOR)
- <<
-
>>
- ~:按位求反
运算符优先级
- 优先级图表(懒得看)
- C语言没有指定同一运算符中多个操作数的计算顺序(&& || ?: 除外)所以 例如 x = f() + g(); 函数f()和g()的执行顺序是不定的