打印时宏转换为 int 不正确

incorrect macro conversion to int when printing

所以我有以下代码:

#define x 010000

我的意图是将 x 定义为十进制的“10000”,但是当我打印出上面的代码时,它被打印为 4096。 我不明白它是如何被翻译成 4096 的。 谁能解释一下?

以 0 开头的数字在 C 中被视为八进制数。010000 是以八进制表示法编写的整数文字。它的值为8**4=4096。删除第一个 0.