You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LARGE_INTEGER联合体QuadPart输出异常:为何仅显示LowPart?

问题分析:printf输出LARGE_INTEGER的QuadPart仅显示低32位的原因

这不是正常现象,问题出在你用错了printf的格式占位符。

  • %x是专门用来输出unsigned int(通常为32位)类型的格式符,而QuadPart的类型是unsigned long long(64位)。当你用%x输出64位变量时,printf只会读取该变量的低32位数据,所以最终只显示了和LowPart相同的内容。

要正确输出完整的64位无符号整数,需要使用对应unsigned long long类型的格式符%llx。修改后的printf代码如下:

printf("Low: %x, high: %x, quad: %llx\n", num1.u.LowPart, num1.u.HighPart, num1.QuadPart);

如果你是在Windows平台开发,也可以使用微软扩展的%I64x格式符,效果和%llx一致,但%llx是C标准规定的格式符,跨平台兼容性更好。

修改后运行代码,QuadPart会完整输出1020304050607080,而LowPart对应的值是50607080,HighPart对应的值是10203040,这也符合小端模式下联合体的内存布局逻辑。

内容的提问来源于stack exchange,提问作者kirill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:15:42