首页 > 解决方案 > 当我要使用 printf 打印十六进制值时,它会将输入作为十进制值,为什么?

问题描述

例如

printf("%x",16);

此 printf 打印 10 而不是 16 为什么它不将值作为十六进制请有人解释一下

标签: chexprintfconversion-specifier

解决方案


16是一个十进制整数常量。因此常数的十六进制表示是10。如果要指定十六进制整数常量,请编写0x16u. 请注意,转换说明符x需要 type 的参数unsigned int。所以后缀u用于十六进制整数常量。

所以调用printf可以看起来像

printf( "%x\n", 0x16u );

输出将是16.

或者

printf( "%#x\n", 0x16u );

输出将是0x16.


推荐阅读