Java 3*012=30,而不是36。为什么呢?
我很困惑这是为什么,我似乎找不到答案。这是作业中的内容:Java 3*012=30,而不是36。为什么呢?,java,operators,Java,Operators,我很困惑这是为什么,我似乎找不到答案。这是作业中的内容: 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 1230 012是十进制值为10的八进制数而不是十进制数 z=(int)(x/y*3.0+z*012); 等于- z=(int)(1/2*3.0+3*10); 供参考 以0开头的数字是八进制数。 以
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
1230 012
是十进制值为10的八进制数而不是十进制数
z=(int)(x/y*3.0+z*012);
等于-
z=(int)(1/2*3.0+3*10);
- 供参考
以0开头的数字是八进制数。
以0x开头的数字是十六进制数。
数字以0b开头,或者OB是二进制数。(自Java版本7-)012
是八进制数而不是十进制数,十进制值为10
z=(int)(x/y*3.0+z*012);
等于-
z=(int)(1/2*3.0+3*10);
- 供参考
以0开头的数字是八进制数。
以0x开头的数字是十六进制数。
Numeric以0b开头,OB是二进制数。(由于Java edition 7-在Java和其他几种语言中,以0
开头的整数文本被解释为八进制(base 8
)数量。这里的012
是一个八进制数,其十进制值为f10
所以你的乘法会是这样的
z = (int) (1/2 * 3.0 + 3 * 10);
从
八进制数字由ASCII数字0后跟一个或多个数字组成
在ASCII数字0到7之间穿插下划线,并且可以
表示正整数、零整数或负整数
在Java和其他几种语言中,以0
开头的整数文本被解释为八进制(base8
)数量。这里的012
是一个八进制数,其十进制值为f10
所以你的乘法会是这样的
z = (int) (1/2 * 3.0 + 3 * 10);
从
八进制数字由ASCII数字0后跟一个或多个数字组成
在ASCII数字0到7之间穿插下划线,并且可以
表示正整数、零整数或负整数
012
是一个八进制,因为它以0
开头:
012 = (0 * 8^2) + (1 * 8^1) + (2) = 10
因此:
012 * 3 = 10 * 3 = 30
注意事项:
- 记住,八进制是以8为基数的数字(十进制是以10为基数),所以它不能有大于或等于8的数字李>
- 类似地,十六进制数字以
0x
开头,例如:0x12=1*16+2=18
012
是一个八进制,因为它以0
开头:
012 = (0 * 8^2) + (1 * 8^1) + (2) = 10
因此:
012 * 3 = 10 * 3 = 30
注意事项:
- 记住,八进制是以8为基数的数字(十进制是以10为基数),所以它不能有大于或等于8的数字李>
- 类似地,十六进制数字以
0x
开头,例如:0x12=1*16+2=18
请参见:
八进制数字由一个ASCII数字0后跟一个或多个
ASCII数字0到7的中间有下划线,可以
表示正整数、零整数或负整数
所以
012=0*82+1*81+2*80=10
在Java 7中,您可以使用它来中断值。请参阅:
八进制数字由一个ASCII数字0后跟一个或多个
ASCII数字0到7的中间有下划线,可以
表示正整数、零整数或负整数
所以
012=0*82+1*81+2*80=10
在Java 7中,您可以使用它来中断值。感谢您的快速响应。为什么我的教授没有指出这一点对我来说很奇怪……除非这是重点:)谢谢你的快速回复。为什么我的教授没有指出这一点对我来说很奇怪……除非这是重点:)你能加上括号吗?这会解释得更好吗