C 打印时宏转换为int不正确

C 打印时宏转换为int不正确,c,octal,C,Octal,因此,我有以下代码: #define x 010000 我的意图是将x定义为十进制的“10000”,但当我打印出上面的代码时,它将被打印为4096。 我不明白这是怎么翻译成4096的。 有人能解释一下吗?以0开头的数字在C中被视为八进制。010000是以八进制表示法编写的整数文字。其值为8**4=4096。移除前一个0。aah!当然可以,谢谢!当你写intx=0,您正在编写一个八进制常量,而不是十进制常量(请参见C11)。零(后面不跟x或x——或者,在某些圆圈中,b或b)表示八进制常数。黑暗的

因此,我有以下代码:

#define x 010000
我的意图是将x定义为十进制的“10000”,但当我打印出上面的代码时,它将被打印为4096。 我不明白这是怎么翻译成4096的。
有人能解释一下吗?

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

aah!当然可以,谢谢!当你写
intx=0,您正在编写一个八进制常量,而不是十进制常量(请参见C11)。零(后面不跟
x
x
——或者,在某些圆圈中,
b
b
)表示八进制常数。黑暗的是,既然你已经成为会员将近四年了,很有可能你还没有真正阅读过帮助资料,这是非常值得做的:,特别是为什么有些问题会被关闭()。这样,你就知道先搜索一下,看看这个问题是否已经被问过和回答过,你就不必浪费时间等待另一个答案,或者,更可能的是,作为重复被关闭:-)顺便说一句,这不是批评,我只是想帮一个同行。是的,我明白这是一个愚蠢的问题,我应该在发布之前寻找过去的答案。很抱歉。