1

为什么输入在 Groovy中01234返回?668正在发生什么样的转变?

printf("%d", 01234)  //668
printf("%d", 0668)   //expecting ')', found '8' at line: 2, column: 17

谢谢。

4

2 回答 2

2

编译器将带有前导零的整数文字视为八进制(以 8 为基数),因此只能包含数字 0 到 7。这​​就是第二行给出语法错误的原因。

八进制的 01234 是十进制的 668。

同样,您可以使用0x十六进制,例如0x1234表示 4660。

于 2013-07-21T10:25:37.047 回答
2

01234 是一个八进制数,等于十进制的 668。

于 2013-07-21T10:25:54.213 回答