int a=012;
int b=13;
System.out.println(a+b);
打印的结果是23,因此其中一个必须已以另一种基本格式声明。这是哪一个,为什么?
答案 0 :(得分:4)
那是因为您的变量a以8为底,所以a是0 * 8 ^ 2 + 1 * 8 ^ 1 + 2 * 8 ^ 0(^表示幂),所以a = 10(十进制),这就是为什么您的答案是23。
如果希望它以10为底,只需删除a=012
中的0。
答案 1 :(得分:1)
好吧,您可以通过以下简单的方法轻松测试该数字以10为底的数字:
System.out.println(Integer.toString(a,10)); // print in the console
其余所有内容均由E. Armand很好地解释。如何将base8数字转换为base10。
答案 2 :(得分:0)
int a = 012; // first '0' means that this number is octal (=10 in decimal)
int b = 13;
System.out.println(a+b); // 012 + 13 = 10 + 13 = 23.
要更改输出,请使用Integer.toString(int i, int radix)
:
System.out.println("binary: 0b" + Integer.toString(a + b, 2)); // binary: 0b10111
System.out.println("octal: 0" + Integer.toString(a + b, 8)); // octal: 027
System.out.println("dec: " + Integer.toString(a + b, 10)); // dec: 23
System.out.println("hex: 0x" + Integer.toString(a + b, 16)); // hex: 0x17