gpt4 book ai didi

c - "Macros for minimum-width integer constants"的目的是什么

转载 作者:太空狗 更新时间:2023-10-29 17:08:49 25 4
gpt4 key购买 nike

在 C99 标准第 7.18.4.1 节“最小宽度整数常量的宏”中,一些定义为 [U]INT[N]_C(x) 的宏用于将常量整数转换为最小数据类型其中 N = 8、16、32、64。为什么要定义这些宏,因为我可以改用 L、UL、LL 或 ULL 修饰符?例如,当我想使用至少 32 位无符号常量整数时,我可以简单地编写42UL 而不是UINT32_C(42)。由于长数据类型至少有 32 位宽,因此它也是可移植的。

那么,这些宏的作用是什么?

最佳答案

你需要在你想确保它们不会变得太宽的地方

#define myConstant UINT32_C(42)

以后

printf( "%" PRId32 " is %s\n", (hasproperty ? toto : myConstant), "rich");

在这里,如果常量是 UL,则表达式可能是 ulong,可变参数函数可以将 64 位值放在堆栈上,这会被 误解printf.

关于c - "Macros for minimum-width integer constants"的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16360828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com