首页 > 解决方案 > 在 java 澄清中使用 += 和三元运算符

问题描述

我正在为即将到来的考试做一些练习题,遇到了一个我和我的同学似乎都能理解的问题。如下:

其中所有变量都是 int 或 int 数组。

分数 += (rounds[i]) ? 我+开始:0

三元运算符如何在带有 += 的 java 中工作?这是我的理解:

所以它是 score += round[i​​] == i+start 或 == 0。

这是一个正确的理解吗?

亲切的问候,詹姆斯

标签: javaoperatorsternary

解决方案


与运算符的任何组合一样,这是运算符优先级和(在运算符具有相同优先级的情况下)关联性的问题。在 Java 中,简单赋值和所有运算符/赋值运算符共享最低优先级。三元运算符是下一个更高优先级的唯一占用者。因此,您的表达式相当于

score += ((rounds[i]) ? (i + START) : 0)

也就是说,对三元表达式求值,其结果是+=.

rounds[i]正如其他人所观察到的那样,如果 of 的类型在 Java 中是无效的int,尽管这在 C 中是可以的。但是如果rounds[i]是一个数组,则表达式在 Java 中可能是明智的boolean,或者可以像这样重写......

score += ((rounds[i] != 0) ? (i + START) : 0)

...假设需要对整数进行 C 风格的布尔解释rounds[i]


推荐阅读