站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题这个关于++操作的怎么理解?

这个关于++操作的怎么理解?

摘要: 这个关于++操作的怎么理解?


int i=1;
while(i<10)
if((i++)%2==0)
System.out.println(i);


正确答案是:
3
5
7
9


可我认为是
2
4
6
8
10

(i++)不是优先计算吗?


和我以前碰到的差不多了
也是寄存器,stack的问题了

看看这个:
http://community.csdn.net/Expert/topic/5067/5067877.xml?temp=.613003


i%2 ==0
i++
System.out.println(i)

没错


() 对 ++不起作用


i++ 后增量是整个表达式做完之后,才+1,括号不能改变运算顺序


恩!三楼的说的不错!这样分开写就不会有什么问题了!


领教了





i%2 ==0
i++
System.out.println(i)
--------------------------
就是说优先级还是%比++高了?


> 就是说优先级还是%比++高了?

不是。这里所谓的优先级是指“运算符”和“操作数”进行*结合*时的优先级,而不是*实施计算*的优先级。++ 在进行*结合*时的优先级是最高的,但对其*实施计算*则是在整个表达式计算完成之后。不知道我这样说清楚了没有~~


【补充】
上贴中说“++ 在进行*结合*时的优先级是最高的”,说的是后自增,也就是 i++。
如果是前自增(就是 ++i 这种),对其*实施计算*是在开始计算表达式之前。


【补充】 :((
上贴中说“对其*实施计算*则是在整个表达式计算完成之后”,说的是后自增,也就是 i++。
如果是前自增(就是 ++i 这种),对其*实施计算*是在开始计算表达式之前。


看你的程序先
int i=1;
while(i<10)
if((i++)%2==0)
System.out.println(i);
首先理解((i++)%2==0)这个话的意思。i++的意思是先把i拿来用,然后自增。那么,((i++)%2==0)的意思就是i%2==0;i=i+1;这两个合起来的意思。理解这一步很重要。我们分析数字i,当i=1的时候,i%2显然不等于0,所以不执行下面的输出语句,但是i要自增。下一次时候,i=2了,那么i%2==0成立,然后i自增为3,然后再打印i的值就是3。其他的也一样这样分析。不知道这样说你能不能懂哦。


i++运算完之后才加1,++i加完之后再运算


↑返回目录
前一篇: 请教如何将JAVA的结果输出到文本中
后一篇: 这个jsp 和bean 大家帮忙看看 ,该怎么做。谢谢了 关于使用javabean 对数据库进行增加、修改和 删除操作的问题