int a=0234;
int result=a/100;
System.out.println("result is " + result);
输出:
结果是1
为什么result
不是2
?
答案 0 :(得分:7)
0234
是octal number,等于2 * 82 + 3 * 81 + 4 * 80
,即156
。
然后156/100 = 1(由于integer division)
答案 1 :(得分:6)
答案 2 :(得分:2)
答案 3 :(得分:2)
0234
是一个八进制数,等于156.整数除法规则然后执行截断,结果为1.请参阅JLS 3.10.1:
八进制数字由ASCII数字0后跟一个或多个散布有下划线的ASCII数字0到7组成,并且可以表示正整数,零整数或负整数。
答案 4 :(得分:1)
以0开头的整数文字被解释为八进制数,而不是十进制数。所以0234
实际上是十进制156的八进制。因此156/100 = 1整数除法。
答案 5 :(得分:1)
当你声明一个int以0开头并且不包含任何大于7的数字时,java将其视为八进制数。 因此0236实际上是236基数8,即156 然后156/100 = 1