首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

int i=0;p=(i++)+(i++);输出p是1,为什么?解决方法

2012-01-30 
int i0p(i++)+(i++)输出p是1,为什么?就是想问一下它运行时候到底是怎么做的 [解决办法]int i0p(i++

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

热点排行