Why is printf output of variable different

I couldn't know why this is happening! Want to know the reason.

{
int i=01;
printf("%d\n",i);
}
output: 1

      

but

{
int i=011;
printf("%d\n",i);
}
output: 9

      

Does anyone have an answer?

+1


source to share


3 answers


011 = Octal, (1 * 8) + 1 = 9 ........................



+4


source


011

is an octal constant. 11 (b8) = 9 (b10)

...



C11 (n1570), Β§ 6.4.4.1 Integer constants An
octal constant is prefixed with 0, optionally followed by only a sequence of digits from 0 to 7.

+11


source


The numbers which are preceded by 0 is called octal numbers in c programming .
to evaluate such an expression we simply follow a conversion rule of converting octal to decimal number system
For conversion the following steps are  to be proceed
such as 011
here 0 indicate the number is octal 
and we are require to convert 11 which is (base 8) to decimal (base 10)

11= 1x8^1+1x8^0
   =8+1
   =9

      

-1


source







All Articles