while循环中的增量后操作(java)
最近我遇到了这个问题while循环中的增量后操作(java),java,loops,while-loop,Java,Loops,While Loop,最近我遇到了这个问题 int i = 10; while (i++ <= 10) { i++; } System.out.print(i); inti=10; 而(i++ i=10。看看i,与10相比 i=10.10这是另一种方法,我可以把我的头绕在这上面。 设f(refi)是一个函数,它通过引用接受i并将其值增加1。因此f(refi)=i+1 现在我们有了f(refi),上面的代码可以写成 int i = 10 while( (f(ref i) -1) <=10 ) {
int i = 10;
while (i++ <= 10) {
i++;
}
System.out.print(i);
inti=10;
而(i++
- i=10。看看i,与10相比
- i=10.10这是另一种方法,我可以把我的头绕在这上面。
设
f(refi)
是一个函数,它通过引用接受i并将其值增加1。因此f(refi)=i+1
现在我们有了f(refi)
,上面的代码可以写成
int i = 10
while( (f(ref i) -1) <=10 )
{
f(ref i);
}
因此i=13。您认为答案应该是什么,为什么?postincrement运算符在后面(或“post”)应用它出现在其中的表达式;但在对任何其他表达式求值之前。这很棘手。您可能会认为答案是12。为什么?因为关系条件求值和循环的分支可能被假设为原子的。显然不是,但这不是一个非理性的假设。很难想象Java“存储”增量操作,并在计算关系条件之后,但在分支出循环之前“插入”它。我想知道在汇编/机器语言级别上,由此产生的代码是什么样子。相反,这可以归结为将关系条件的计算存储在布尔值(位/字节?)中,执行增量操作,然后对存储的布尔值执行分支if操作。谢谢,我错过了while循环中增量的最后一步。
while(11 - 1 <= 10) {12}
while (13 -1 <= 10) -> break;