c - 打印时错误地将宏转换为 int

标签 c octal

所以我有以下代码:

#define x 010000

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

最佳答案

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

关于c - 打印时错误地将宏转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53734687/

相关文章:

c - C中字符串中的八进制表示

c++ - 后增量行为

c - Fork 永远不会进入子进程

linux - 使用八进制表示法设置权限

Python:无效的 token

c++ - char* 如何以十六进制读取这个整数?它在 ostream::write() 中如何工作?

c - For 循环检测到 '\0' 早于预期

c - 我如何制作自己的 fgetc() 函数?

c++ - 使用位移运算将两个变量相乘

c++ - 在C++中递归地从十进制到八进制。以std::string格式输出