<分区>
我很困惑为什么会这样,我似乎无法找到原因的答案。这是来自作业:
x=1, y=2, z=3;
z=(int)(x/y*3.0+z*012);
System.out.printf("%d %d %d", x, y, z);
答案是:
1 2 30; << from eclipse
我是如何到达这里的:
(1/2) = 0 * 3.0 = 0 + (z*012)= 30
。我想说 36,但根据 IDE,我猜它是 30。
<分区>
我很困惑为什么会这样,我似乎无法找到原因的答案。这是来自作业:
x=1, y=2, z=3;
z=(int)(x/y*3.0+z*012);
System.out.printf("%d %d %d", x, y, z);
答案是:
1 2 30; << from eclipse
我是如何到达这里的:
(1/2) = 0 * 3.0 = 0 + (z*012)= 30
。我想说 36,但根据 IDE,我猜它是 30。
最佳答案
012
是八进制数,不是十进制数,十进制数是 10。
z=(int)(x/y*3.0+z*012);
等于-
z=(int)(1/2*3.0+3*10);
0开头的数字为八进制数。
以0x开头的数字为十六进制数。
数字以 0b 开头或 OB 为二进制数。(自 Java 版本 7 - Binary Literals )
关于java - 3*012 = 30 而不是 36。这是为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719946/