With this code snippet:
int a = 011;
printf("a = %d", a);
Why is the result
a = 9
With this code snippet:
int a = 011;
printf("a = %d", a);
Why is the result
a = 9
011
is an octal value and its decimal equivalent is 9. Preceding integer literal with 0
indicates octal value.
Use %o
specifier in printf
to print the value in octal.
A leading 0
, in an int
literal or int
constant, represents the octal value. It is called an octal constant.
Related: C11
standard, chapter 6.4.4.1, Integer constants, Paragraph 3,
An octal constant consists of the prefix
0
optionally followed by a sequence of the digits0
through7
only.