Wyn*_* Wu 2 java boolean-logic
int i = 0;
boolean t = true;
boolean f = false, b;
b = (t || ((i++) == 0));
b = (f || ((i+=2) > 0));
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)
执行上述代码后,打印结果为2,而不是3,为什么?
我发现在通过调试执行“ b =(t ||((i ++)== 0))”之后,“ i”是0而不是1。
Jon*_*eet 13
好吧,我很困惑为什么“ i ++”不更改“ i”。
因为i++不会在您提供的代码中执行。
在形式为的表达式中a || b,first a被求值,并且如果它是真的(在这种情况下是真的),b 则不对表达式求值。这称为短路。
JLS第15.24节对此进行了描述。
如果您更改代码以改为使用非短路|运算符,如下所示:
b = (t | ((i++) == 0));
Run Code Online (Sandbox Code Playgroud)
...然后它将对两个操作数进行求值。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |