【问题标题】:Two same programs different outputs? [duplicate]两个相同的程序不同的输出? [复制]
【发布时间】:2020-10-08 04:35:22
【问题描述】:
package com.company;

public class test {
    public static void main(String[] args) {
        int x=5, y=4, z;
        int step1 = (++x + ++y);
        int step2 = (y++ % 2);
        z= step1*step2;
        System.out.println(step1 + "*" + step2);
        System.out.println(z);
    }
}

这个程序打印11。我尝试内联 step1step2 期望得到相同的结果,但它会打印 1

package com.company;

public class test {
    public static void main(String[] args) {
        int x=5, y=4, z;
        z= (++x + ++y) * y++ % 2;
        System.out.println(z);
    }
}

为什么输出不同?

【问题讨论】:

  • 试试z = (++x + ++y) * (y++ % 2);

标签: java


【解决方案1】:

我建议你看看java是如何处理它的operator precedence的。

要获得相同的输出,只需将第二个示例中的代码更改为

z = (++x + ++y) * (y++ % 2);

【讨论】:

    【解决方案2】:

    您的代码有问题。在java中它是这样工作的。

       z= ((++x + ++y) * y++) % 2;
    

    计算是 z = ((6 + 5) * 5) % 2 z = (55) % 2 z = 1

    对于你预期的答案,你需要写

       z= (++x + ++y) * (y++ % 2);
    

    现在(z = 11)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2017-03-16
      • 2020-05-07
      相关资源
      最近更新 更多