0

如果下面的“if”stmt 评估为 TRUE,则 Output 的值 = 20 或 10..

有人可以解释一下增量运算符是如何工作的吗?

public class Test {

    public static void main(String[] args) throws IOException {
        int Output = 10;
        boolean b1 = true;
        if ((b1 == true ) && ((Output += 10) == 20)){
            System.out.println("We are Equal = " + Output);
        }
        else{
            System.out.println("Not Equal = " + Output);
        }
    }
}
4

3 回答 3

5

与其说是+=操作员的工作方式不同,不如说是操作员的工作方式不同。它是&&运营商。

&&操作员短路。如果b1为假,则b1 && (anything else)不可能为真,因此它停止评估。因此,Output += 10如果b1不正确,则不评估,因此Output将是 10。

如果b1为真,那么它必须继续查看条件的其余部分是否为真。这样做时,它必须评估Output += 10,从而将 的值增加Output10,使值变为Output20。

于 2013-10-04T00:54:13.547 回答
1

整数值10被添加到 的当前值Output。之后,使用==运算符比较输出的值,该运算符仅对布尔值进行操作。

在这段特定的代码中,由于b1为真,并且在其值增加 10 后输出为 20 if,因此块的条件为真,因此将被丢弃,并且将执行块else内的任何代码。if

于 2013-10-04T00:58:47.523 回答
-1

1) += 表示“预增量”。因此,使用Output=10if 块将按如下方式进行

if ((b1 == true ) && ((Output = Output + 10) == 20)){

在这里,一旦增量完成,输出的值将与 20 进行比较。所以,在 if 块的第一次执行期间,它将按如下方式进行。

if ((b1 == true ) && ((20) == 20)){

2)=+ 表示“后增量”。因此,Output 的值将在递增之前与 20 进行比较..所以,在 if 块的第一次执行期间..它将按如下方式进行..

if ((b1 == true ) && ((10) == 20)){

希望这个解释有帮助:-)

于 2013-11-29T11:29:39.120 回答