因为在不同的编译器下,处理方式不一样。
具体如下:
int i=5;
int m=5;
int p = (i++)+(i++)+(i++);
int q = (++m)+(++m)+(++m);
visual studio中的处理方式:
++在变量后面的时候,先处理其他算式,最后再计算++,所以,
p = (i++)+(i++)+(i++)就等价于:
p = i+i+i = 5+5+5=15;
i++;执行3次,i的值变成8
++在变量前面的时候,先计算++,然后在计算其它部分,所以,
q = (++m)+(++m)+(++m);就等价于:
++m执行3次,m的值变成8
q=m+m+m=8+8+8=24
在devc中的处理方式:
++在变量后面的时候,是边计算边++,所以
p = (i++)+(i++)+(i++);就等于
p = 5 + 6 + 7 = 18;
先用5替换i,然后执行一次i++,i变成6
然后再用6替换第二个i,然后再执行i++,i变成7
然后在用7替换第三个i,然后执行p=5+6+7=18,最后再执行一次i++
++在变量前面的时候,计算过程是:
先执行两次++m,m的值变成7,然后执行7+7=14,然后再执行一次++m,m变成8,然后在执行p=14+8=22
因为程序编译不一定是从左到右的
不就是5+6+7,和6+7+8么,你口算怎么算呢?
i++先用i计算,再加1,++j反之