【发布时间】:2011-07-27 20:21:20
【问题描述】:
我正在开发一个 32 位系统。当我尝试在单个 printf 中打印多个 64 位值时,它无法再打印任何其他(即第 2、第 3、...)变量值。
示例:
uint64_t a = 0x12345678;
uint64_t b = 0x87654321;
uint64_t c = 0x11111111;
printf("a is %llx & b is %llx & c is %llx",a,b,c);
为什么这个 printf 不能打印所有值?
我正在修改我的问题
printf("a is %x & b is %llx & c is %llx",a,b,c);
这样做的结果是:a 是 12345678 & b 是 8765432100000000 & c 是 1111111100000000
如果我没有正确打印 a 的值,那么为什么其他的值会发生变化??
【问题讨论】:
-
您得到的输出(或错误)是什么?
-
其实可以的:ideone.com/um0QL
-
您不能将
ll用于uint64_t。ll只能用于long long类型。你应该使用<inttypes.h>macros! -
当我将您的代码 sn-p 包含在一个完整的程序中时,它会产生预期的输出。请提供一个最小的、完整的示例程序以及您的预期输出和您实际看到的输出。有关创建最小完整程序的人员以及为什么这是一个有用的工具的说明,请参阅sscce.org。
-
您使用的是什么编译器、操作系统和编译器选项?