c - 在 printf 语句中使用 %x 打印整数数据类型的值

标签 c octal

被下面的一段代码弄糊涂了。

#include <stdio.h>
void main()
{
int a=0100;
printf("%x",a);
}

我得到的值是 40。

谁能给我解释一下这是怎么回事?

注意:当我删除数字 1 之前的数字 0 时,当 100 转换为十六进制时,它是正确的 64。

Codepad link to above code

最佳答案

在 C 语言中,以 0 为前缀的常量是一个八进制 常量。基数 8 中的 0100 是 1000000 以 2 为基数,十六进制为 40,以 10 为基数为 64。因此您的程序正在打印它应该打印的内容。

关于c - 在 printf 语句中使用 %x 打印整数数据类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40449093/

上一篇:C nasm代码的实现

下一篇:并发多线程

相关文章:

c - 标准 C 代码中的负整数/浮点十进制数到带符号的十六进制和八进制

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

c - 在父进程结束之前,linux 是否永远不会结束子进程?

我可以将多个位域结构替换为 C 中的数组吗?

c - 我们什么时候在#define 中进行类型转换

c - inet_aton 转换 010.000.000.001 错误?

c - 八进制和十六进制的 stringTOint 转换