Search code examples
c++zerooctal

Is 0 a decimal literal or an octal literal?


Zero is always zero, so it doesn't matter. But in a recent discussion with a friend he said that octal literals are almost unused today. Then it dawned upon me that actually almost all integer literals in my code are octal, namely 0.

Is 0 an octal literal according to the C++ grammar? What does the standard say?

The only real use I'm aware of is for unix file permissions.


Solution

  • Yes, 0 is an Octal literal in C++.

    As per the C++ Standard:

    2.14.2 Integer literals [lex.icon]

    integer-literal:  
        decimal-literal integer-suffixopt  
        octal-literal integer-suffixopt  
        hexadecimal-literal integer-suffixopt  
    decimal-literal:  
        nonzero-digit  
        decimal-literal digit  
    octal-literal:  
        0                           <--------------------<Here>
        octal-literal octal-digit