das*_*dsa 2 java operator-precedence
请看下面的代码:
int i=5;
boolean b = i<5 && ++i<5;//line 2
System.out.println(i);//line 3, prints 5
Run Code Online (Sandbox Code Playgroud)
在第2行中,根据我的理解:由于在所有运算符中,++i应该首先评估具有最高优先级的++ .但line 3实际上是打印i=5(而不是6).含义,&&在++运算符之前已经过评估.这怎么可能?
编辑:从答案中我看到"在Java中,所有表达式都是从左到右进行评估." 但什么时候实际优先顺序发挥作用.在以下代码中:
int a=1,b=1,c=1;
boolean b = a==b&&b==c;//Line2
Run Code Online (Sandbox Code Playgroud)
在第2行中,代码不会从左到右运行.首先评估a == b然后b == c然后是&&运算符.你能解释一下吗?
这不是表达式的处理方式.
在Java中,所有表达式都是从左到右进行计算.运算符优先考虑的评价时,只有发挥作用的论点的&&.
因此i < 5在计算之前++i < 5就算了.
在这种情况下,++i < 5 将 不进行评估,因为i < 5是false.所以i留在5.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |