Любое целочисленное значение с префиксом 0
является восьмеричным значением. Т.е.: 01 - восьмеричное 1, 010 - восьмеричное 10, которое является десятичным 8, и 0 - восьмеричное 0 (которое является десятичным, и любое другое, 0).
Так что да, «0» является восьмеричным.
Это простой английский перевод фрагмента грамматики в ответе @ Als: -)
Целое число с префиксом 0x
это , а не с префиксом 0
. 0x
- это явно другой префикс. По-видимому, есть люди, которые не могут сделать это различие.
В соответствии с тем же стандартом, если мы продолжим:
integer-literal:
decimal-literal integer-suffixopt
octal-literal integer-suffixopt
hexadecimal-literal integer-suffixopt
decimal-literal:
nonzero-digit <<<---- That's the case of no prefix.
decimal-literal digit-separatoropt digit
octal-literal:
0 <<<---- '0' prefix defined here.
octal-literal digit-separatoropt octal-digit <<<---- No 'x' or 'X' is
allowed here.
hexadecimal-literal:
0x hexadecimal-digit <<<---- '0x' prefix defined here
0X hexadecimal-digit <<<---- And here.
hexadecimal-literal digit-separatoropt hexadecimal-digit