【发布时间】:2016-04-28 08:30:22
【问题描述】:
printf("%x\n",(const uint8_t *)0x0D);
printf("%x\n",(const uint8_t)0x0D);
printf("%x\n",(uint8_t *)0x0D);
printf("%x\n",0x0D);
他们都给我D。这里const和*s有什么意义?
【问题讨论】:
-
把编译器的警告调到最大,你就会发现这段代码出了什么问题。
-
那些有指针转换的都是错误的。这是主要区别。使用
-Wall选项编译您的代码。 GCC 将为您提供所有信息。 -
这些都不正确。最后一个应该有后缀
U,因为x需要一个无符号类型。但 0x0D 已签名。 -
@2501 OP 的代码在第 4 行是正确的。请参阅 C11 §6.5.2.2 11. 当传递的 ... 值在
int和unsigned范围内时,没有区别。
标签: c printf format-specifiers