山不在高,有仙则名。水不在深,有龙则灵。
----CSDN 时时三省
下标引用、函数调用和结构成员
下标引用操作符
示例:
第二个[]就是下标引用操作符 第一个[]是数组
[]的操作数是两个 一个是arr一个是4
函数调用
示例:
函数必须带后面的括号
结构成员
.
->
示例:
.的使用
结构体.成员名
->的使用
结构体指针->成员名
表达式求值
示例:
表达式的求值有时候是根据操作符的优先级和结合性决定的。
同时有些表达式的操作数在求值的过程中可能需要转换成其他类型。
隐式类型的转换
C的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。
整形提升
示例:
3的二进制序列是
000000011
因为它是char类型 char类型是8个比特位
127的二进制序列是
01111111
发现a和b都是char类型的,都没有达到一个int的大小
这里就会发生整形提升
提升后就是
00000000000000000000000000000011
0000000000000000000000001111111
加完以后的结果就是
00000000000000000000000010000010
这个结果会发生截断 因为它是char类型 所以结果就是10000010
c也需要发生整形提升
结果就是
11111111111111111111111110000010
打印的时候还得把这个
如何进行整形提升呢
整形提升是按照变量的数据类型的符号位来提升的
负数的整形提升
因为负号的符号位是1所以补充的时候全是1
正数的整形提升
高位补充符号位 即为0