为什么在以下代码段中050不等于50?

Bab*_*ani 5 c

为什么050不等于50以下代码段?

#include <stdio.h>
int main(void) {
    int x=050,y=50;
    int ans;
    ans= x==y ? x+3 : y+7;
    printf("%d\n",ans);
}
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 7

因为050被认为是八进制并被50认为是十进制的.

所以x = 050基本上意味着x = 40.

6.4.4.1/3

十进制常量始于一个非零数字和由十进制数字序列的.八进制常量由pre fi x 0组成, 可选地后跟一个数字0到7的序列.