日期:2014-05-20  浏览次数:20685 次

int i=0;p=(i++)+(i++);输出p是1,为什么?
就是想问一下它运行时候到底是怎么做的


------解决方案--------------------
int i=0;p=(i++)+(i++);
第一个i++为0 之后i=1
第二个i++为1 之后i=2
i++先用i运算,然后i=i+1;
++i先把i=i+1,再运算
------解决方案--------------------
这样写p=(++i)+(i++);
因为i初始值是0的缘故
------解决方案--------------------
如果int i=0时; p=i++; 是先赋值,后i在自加 所以结果是p=0,i=1;

然后看,p=(i++)+(i++) ,即第一个(i++)时,i=1,再运行第二个(i++)时,i已经为1,是先把i赋给p,然后再自加1,所以p=1,i=2
------解决方案--------------------
++的优先级是高于+

所以就是执行1.i++=0,i=1;
2.i++=1,i=2;
3.()+()=1;
------解决方案--------------------
int i=0;p=(i++)+(i++);输出p是1,为什么?
======================================================
我觉得是这样的:
首先,第 初值为 0
先计算括号头的
从左向右运算:第一个()计算后i自增.变为 1
再运算第二个括号 
所以 p=0+1=1