为什么变量的printf输出是不同的

Iqb*_*bal 1 c printf

我不知道为什么会这样!想知道原因.

{
int i=01;
printf("%d\n",i);
}
output: 1
Run Code Online (Sandbox Code Playgroud)

{
int i=011;
printf("%d\n",i);
}
output: 9
Run Code Online (Sandbox Code Playgroud)

有人有答案吗?

md5*_*md5 11

011是八进制常数.11 (b8) = 9 (b10).

C11(n1570),§6.4.4.1整数常量
八进制常量由前缀0组成,可选地后跟一个数字0到7的序列.