【发布时间】:2012-08-20 16:03:00
【问题描述】:
我正在尝试打印一个 uint16_t 和 uint32_t 值,但它没有给出所需的输出。
#include <stdio.h>
#include <netinet/in.h>
int main()
{
uint32_t a = 12, a1;
uint16_t b = 1, b1;
a1 = htonl(a);
printf("%d---------%d", a1);
b1 = htons(b);
printf("\n%d-----%d", b, b1);
return 0;
}
我也用过
printf("%"PRIu32, a);
显示错误。
如何打印这些值以及所需的输出是什么?
【问题讨论】:
-
向我们展示(确切的!)错误消息会比仅仅说它“显示错误”更有帮助。而不仅仅是“没有给出想要的 o/p”,而是向我们展示实际的输出(并拼出“输出”这个词而不是写“o/p”)。
-
printf("%d---------%d",a1);会产生未定义的行为,因为格式字符串中有两个 %d 但只传递一个参数。