gpt4 book ai didi

c - 在预期 PRIu32 的 printf 的格式字符串中使用 %lu 是否有效?

转载 作者:行者123 更新时间:2023-12-04 23:53:29 29 4
gpt4 key购买 nike

例如,假设我有一个 uint32_t 类型的变量 i。打印它的预期方式是这样的:

printf("%"PRIu32"\n", i);

但是需要注意的是,long unsigned int要求至少32位宽。 long unsigned int 的正确说明符是 %lu。因此,上面的语句是否可以替换为:

printf("%lu\n", i);

我想是的,因为我看不出为什么不这样做。但是,如果是,那么这将消除存在这些宏化说明符(如 PRIu32)的需要,所以我想我最好问一下。

我问它的原因是我想为 printf 动态创建一个格式字符串,如果我不这样做就很难为这个格式字符串分配空间知道字符串 PRIu32 扩展到的大小(以及 sizeof(PRIu32) 是否有效可能值得单独提问)。

无论如何,我认为这样写应该是有效的:

printf("%lu\n", (long unsigned)i);

最佳答案

Thus, can the above statement be replaced with:

printf("%lu\n", i);

I’d suppose yes, since I can see no reason why not.

不,因为long unsigned int可以大于 32 位,或者如果恰好 32 位仍然可以具有与 uint32_t 不同的表示形式.

In any case, I suppose it should be valid to write:

printf("%lu\n", (long unsigned)i);

是的,正如您观察到的,它也是安全的,因为long unsigned int需要能够表示 uint32_t 的所有值可以拿。

关于c - 在预期 PRIu32 的 printf 的格式字符串中使用 %lu 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44209721/

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