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
0optionally followed by a sequence of the digits0through7only.