日期:2014-05-20 浏览次数:20768 次
i-=i*i 变 -2, 再加入原先的i 得到0.
为什么在VC 下面运行,结果为-4? 哪位大神可以帮助解答?
#include "stdio.h" int main(){ int i=2; int j=2; int temp = j+=j-=j*j; printf("j=%d\n",temp); printf("i+=i-=i*i=%d\n",i+=i-=i*i); return 0; }
二.
(1) i=i+1
它的效率最低,因为其执行过程如下:
1-1 读取右x的地址;1-4 将右值传给左边的x
(temp=i+1; i=temp;)
(2) i+=1
它的执行过程是:
2-1 读取右x的地址;2-3 将得到的值传给x
(3) i++
它的执行过程是:
3-1 读取右x的地址3-2 x自增1;
(temp=i; i=temp+1; return temp;)
(4)++i
++i的过程最简单:
4-1 i增1然后return i 的值,一步完成,没有给任何temp变量赋值。
建议写成i+=1这样效率高,不要过多地使用i++和++i,太多了会容易引起歧义~~ 建议只在循环里使用,运算的时候不要用。
三. 哪位大神帮忙解答一下? 为什么
|