Yan*_*key 1 java bit-manipulation
有人可以向我解释为什么这会打印出0而不是2?这里肯定会有一些简单的(读作愚蠢的)错误,但我无法弄明白.谢谢.
public class test{
public static void main(String[] args){
int result[] = new int[]{0,0,1,0};
int out = 0;
for(int i = 0;i < result.length; i ++){
out = out << 1 + result[i];
}
System.out.println(out);
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为+优先级高于<<,因此您需要使用括号来强制执行所需的评估顺序:
out = (out << 1) + result[i];
Run Code Online (Sandbox Code Playgroud)
这是一个关于ideone的演示的链接.