急,小弟初学,半天没懂"自增运算和自减运算,哪位大哥给具例详细讲讲?

来源:百度知道 编辑:UC知道 时间:2024/05/12 17:25:58
int i=5;
j=(++i)+(++i);
j=(++ij+(++i)+(++i);
j=(++ij+(++i)+(++i)+(++i);
j,i各等于多少?是怎么个算来的呀 环境是Visual c++,
为什么我的结果是j=14,i=7
j=22,i=8
j=31,i=9
哪位高手讲讲这怎么会有那么多的差别,和书上说的不一样,和别人说的也不一样,到底是怎么得来的呀

算了,今天就多打点字了..
我只说一下vc++下的结果的原因啊,由于不同编译器,结合的方式不同,必然会有不同的结果了..

j=(++i)+(++i);
j=(++ij+(++i)+(++i);
j=(++ij+(++i)+(++i)+(++i);
先说第一个:计算的时候,有需要两个存放的空间,假如定义为寄存器a和寄存器b,把两个++i分别放在a和b中.
先执行++i,这个时候,i=6了,在执行一次++i,这个时候,i=7了.
由于寄存器a和b中存放的都是i,所以再执行一次(a)+(b)=14了(括弧表示其中的值)也就是7+7=14了.
第二个呢?
同理,先计算出第一个++i和第二个++i的和之后,结果为14了,再计算下一个++i,就是14+8=22了,同时i=8了
第三个呢:
就是22+9=31了,同时先执行了++i,所以i=9了..

不同的编译器,结合的方法不同,自然结果就不一样了......

main()
{
int i=0,j=0,k=0,l=0;
print("%d/n",i++);
print("%d/n",j--);
print("%d/n",++k);
print("%d/n",--l);
print("%d/n",i);
print("%d/n",j);
print("%d/n",k);
print("%d/n",l);
}
看看输出结果 你就明白了

i++ 与++i 都属于自增运算 表示让i加一
i-- 与--i 都属于自减运算 表示让i减一
符号在前面的表示先对i做自加或自减 再取出i的值进行其他操作
符号在后面的表示先取出i的值进行操作,然后再对i进行自加或自减

你所提出的表达