我在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,很奇怪,任何人都可以解决这个问题吗?
对我来说理解三元运算符会很有帮助.
提前致谢!