1.表达式求值
a.优先级和结合性,优先级表格
结合性就是多个相同优先级的符号在相邻时,它的运算顺序(L-R是从左向右,N/A是没有优先级)
是否控制求值顺序指的是:是否影响表达式内部各个部分的运算顺序|| && ?:
b.隐式类型转换:表达式求值过程中有些操作数需要转换类型再运算
如:char类型的相加,需要先转换成整形再运算(cpu的硬件问题)
1. 这是存储整数的过程 ,不是整形提升
可以观察到,char表示的整数是有范围的
2.整型提升(大小小于整形的类型):a b两个char 类型相加时,要整型提升成整形,然后相加,再转化成char
比int大的类型运算时会把小的转化成大的int->double(寻常算数转化)
在表达式中的非int类型会转化成int类型
char c;
sizeof(c)=1;sizeof(+c)=4;
+c是一个表达式
3.转换规则
int - > char :取补码,截8位,换原码
char - >int :取补码,补符号位(一就是一,0就是0,换原码)
2.问题代码
不要在同一行中对同一个变量进行多次操作
i = i-- ---i*(i/12);这样的就是有问题
勾石代码