I在C打印奇怪的事情

时间:2013-04-22 19:28:27

标签: c int printf

我不明白为什么这段代码会打印24和20。

int main(){ 
    int m = 24, n = 024;
    printf("%d %d", m, n); 
    return 0; 
}

2 个答案:

答案 0 :(得分:3)

在C中,以“0”开头的数字是八进制。所以024表示24 8 ,即2•8 + 4 = 20.

答案 1 :(得分:3)

前导0表示八进制,即基数8.所以:

 2 * 8 + 4 == 20