我有以下代码
public static void main(String[] args){
//find sign of 32 bit integer
int a=0x6348987C;
a=a>>31;
int one=a&1;
if( one==0 )
{
System.out.println("Positive");
}
else
{
System.out.println("Negative");
}
}
如果我用 if( a&1 ==0 )
更改比较行,编译会失败,运算符 & 不能应用于 int,boolean,让我想知道移位运算符的结果类型是什么。
最佳答案
就运算符优先级而言,==
相等运算符先于按位 AND 运算符(请参阅 this page )。您应该放置括号以使后者位于前面:
if ((a & 1) == 0) {
请注意,a & 1
结果的类型与原始代码中的 one
类型相同(int
)。
关于java - 移位运算符的输出是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613614/