参考http://blog.csdn.net/zhangweiiou/article/details/46964673
以下代码段的输出是什么?
for ( int i=10; i> 1; i /=2 ) { printf("%d ", i++);}
答案 10 5 3 2
解析:i=10,输出10,执行i++,i变成11
11/2截取整数部分,是5,输出5,执行i++,i变成6
6/2=3,输出3,执行i++,i变成4
4/2=2,输出2,执行i++,i变成3
3/2截取整数部分,是1,不满足i>1的循环条件,退出循环
因此输出结果是10 5 3 2
a++和++a的区别:
A: a=5; b=++a; // 相当于a=a+1;b=a; 结果是a=6,b=6
B: a=5; b=a++; // 相当于b=a;a=a+1; 结果是a=6,b=5
举个列子:求a的最终值
int a=3; a+=a+=a++*a--; 计算过程如下: 先算a++*a-- 由于a=3 a++等于3 //这里后缀++中的第二步自加运算还没有进行 a--等于3 //这里后缀--中的第二步自减运算还没有进行 所以 a++*a-- 等于9 a+=a++*a-- 等于a+=9等于a=a+9=3+9=12 在算a+=a 等于a=a+12=12+12=24 然后在进行再后缀++中的第二步自加运算和后缀--中的第二步自减运算 即进行 a=a+1;此时a=25;再进行a=a-1;此时a=24 所以最终a=24