c语言自增自减问题

#include <stdio.h>

int main()

{

int i = 1, j = 1, k;

i = (i++) + (++i);

printf("i=%d \n", i);

k = (j++) + (++j);

printf("j=%d, k=%d\n", j, k);

}

执行结果:

i=5

j=3, k=4

请给出详细的说明 谢谢各位大虾了!

呼呼,终于想到了~
先
(i++) 就是先提取i的值来使用最后才自加
(++i) 先把i+1然后这个时候i=2
那么i=2+2虽然前面是先提取出来了i 但实际并没有自加过,之所以为2是因为(++i)而i始终都只是一个内存空间里的值
最后i=4,这个时候运算完了,然后执行最初的(i++) 里的自加,i就等于5
k = (j++) + (++j);
是因为k=4之后,k没有自加,自加的是j所以k=4;j=3;
这个道理就跟
i=(i++)一样,先赋值了,之后,才去自加,所以这里的i=2
k=(j++)则是把j值赋值之后,才自加~
不知道这样说能听懂了不?
总之就是i++这种,是赋值之后才自加的。这是C跟C++里编译上的问题吧
我同时用了TC VC++6.0 VS2005都是这样,用了C#和JAVA没这现象。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-14
编译器不同,结果不同。实际程序中最好不要这样写,避免歧义

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网