Joh*_*son 17 java printing bitwise-operators operator-precedence
这段代码
int a = 6;
System.out.print("The result is " + a*a);
Run Code Online (Sandbox Code Playgroud)
工作得很好,但这一个
int a = 6;
System.out.print("The result is " + a^a);
Run Code Online (Sandbox Code Playgroud)
产生例外:
线程"main"中的异常java.lang.RuntimeException:无法编译的源代码 - 错误的树类型:at pkg1.pkg4.taking.input.TakingInput.main(TakingInput.java:11)
为什么这样?
当我试图一次性打印几个按位操作的结果时出现了这个问题,如下所示:
System.out.print(a&b + "\n" + a|b + "\n" + a^b);
Run Code Online (Sandbox Code Playgroud)
我查看了print()方法的描述和关于按位运算符的几个主题以及在SO上打印到控制台,包括编写问题时的推荐主题,但找不到答案.
GBl*_*ett 22
("The result is " + a) ^ a
Run Code Online (Sandbox Code Playgroud)
这显然是行不通的.括号括起来:
System.out.print("The result is " + (a^a));
Run Code Online (Sandbox Code Playgroud)
或者正如Holger所提到的,您可以使用printf以下方法消除此问题:
System.out.printf("The result is %d", a^a);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
681 次 |
| 最近记录: |