小编Jam*_*ani的帖子

为什么以下Java程序会产生奇怪的输出?

我在Java Puzzlers中找到了下面的谜题,

public class DosEquis {
    public static void main(String[] args) {
        char x = 'X';
        int i = 0;
        System.out.print(true  ? x : 0);
        System.out.print(false ? i : x); 
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了这个代码并运行它但输出不是按照我的猜测来的,

我的猜测输出应该是:XX
实际上输出是:X88

我努力了解但我不能,任何人都能给我们解释一下吗?为什么不同的产出即将到来?因为我能够理解第一个print()将打印变量char x字符值,但第二个print()打印88ASCII值表示在char x.if我简化三元运算符表达式在第二个print()像这样

if(false){
    System.out.print(i);
}else{
    System.out.print(x);
}
Run Code Online (Sandbox Code Playgroud)

然后输出即将到来XX,很奇怪,任何人都可以解决这个问题吗?

对我来说理解三元运算符会很有帮助.

提前致谢!

java puzzle

4
推荐指数
1
解决办法
695
查看次数

标签 统计

java ×1

puzzle ×1