1.关于自加运算,有前自加和后自加的问题:i++表示后自加,表示先使用此时i的值,使用完后再把i的值加一比如:
a=(i++)+(i++)+(i++);此时是后加运算,那就先使用此时i的值:3,故a=3+3+3=9.然后在执行,i++,i++.i++最后i的值是6
2.而++i表示前自加,就是先把j的值加一,然后再使用j的值:如: int i =4,b=++i;那么此时就是先把i的值加一,然后再i的值赋给b,即b=5,j=5
但是b=(++j)+(++j)+(++j);这样的表达式用不同的编译器执行的顺序也是不同的。
用vs2008 情况1.先执行j++,j++,j++此时j的值就是6。那么b=6+6+6=18
vc++ 6.0 结果:b=(++j)+(++j)+(++j)=5+5+6=16;
解释:编译先算前两个自加:++j.++j目的就是为了算(++j)+(++j)=之间的加号即 5+5 然后在算一个一个++j即5+5+6=16
我们可以多自加几个看看:
#include <stdio.h>
main()
{
int i=5, b;
b= (++i) + (++i) + (++i) + (++i);
printf("b=%d\n",b);
}
结果:
b=31
Press any key to continue
即7+7+8+9=31
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。