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、 ?表达式不可以做左值

posted @ 2010-05-22 09:14  红脸书生  阅读(605)  评论(0编辑  收藏  举报