什么时候:
byte[] b = {-128, 0, 0, 0};
long total = 0;
第一个表达式返回 -2,147,483,648:
for (int i = 0; i < b.length; i++) {
int shift = (b.length - 1 - i) * 8;
total += (b[i] & 255) << shift;
}
第二个返回 2,147,483,648:
for (int i = 0; i < b.length; i++) {
int shift = (b.length - 1 - i) * 8;
long tmp = (b[i] & 255);
total += tmp << shift;
}
我的问题是;为什么第一个陈述是肯定的,而第二个陈述看起来是相同的陈述?