C语言细节之二 : 表达式
1、
(1)int i = 7;
printf("%d\n", i++ * i++); // 49
解释:后缀自加和自减在输出原值以后,对原变量的改变操作并不是马上接着做的。
此处就是在整个表达式都利用原值进行运算之后,才对i做两次自加
(2)int i = 7;
printf("%d\n", ++i * ++i); // 81
解释:++i后就已经把i变成8,再++i后,i变成9,
此时再把两个i(为9)的临时变量相乘得到81
(3)int i = 7;
printf("%d\n", ++i * i++); // 64
解释:++i后就已经把i变成8,再i++返回的是i的现值8,
此时再把一个i(为8)与另一个数字8相乘
(4)int i = 7;
printf("%d\n", i++ * ++i); // 64
解释:i++返回的是i的现值,而++i后就把i(还为7)变成8,所以第一个返回的是8,第二个也是8
2、 ?表达式不可以做左值