有人可以向我解释为什么这会打印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);
}
}
答案 0 :(得分:7)
答案 1 :(得分: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);
}
}
有效...... - 问题似乎与运营商优先级有关。 +
优先于<<
答案 2 :(得分:1)
这就是为什么:)
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);
}
请注意**是供您查看遗失的内容