gaa*_*kam 2 c int format-specifiers
例如,假设我有一个i
类型的变量uint32_t
.打印它的预期方式是这样的:
printf("%"PRIu32"\n", i);
Run Code Online (Sandbox Code Playgroud)
但是,应该注意,要求long unsigned int
至少32位宽.正确的说明符long unsigned int
是%lu
.因此,上述陈述可以替换为:
printf("%lu\n", i);
Run Code Online (Sandbox Code Playgroud)
我想是的,因为我没有理由不这样做.但是,如果是,那么这将消除对PRIu32这些宏化说明符的存在的需要,所以我想我最好问一下.
我问它的原因是我想printf
动态创建一个格式字符串,如果我不知道字符串的大小PRIu32
扩展为(以及是否sizeof(PRIu32)
是否有效可能值得一个单独的问题).
在任何情况下,我认为它应该是有效的写:
printf("%lu\n", (long unsigned)i);
Run Code Online (Sandbox Code Playgroud)
因此,上述陈述可以替换为:
Run Code Online (Sandbox Code Playgroud)printf("%lu\n", i);
我想是的,因为我没有理由不这样做.
不,因为long unsigned int
可能大于 32位,或者如果恰好32位仍然可以具有不同的表示uint32_t
.
在任何情况下,我认为它应该是有效的写:
Run Code Online (Sandbox Code Playgroud)printf("%lu\n", (long unsigned)i);
是的,正如您所观察到的那样,它也是安全的,因为long unsigned int
它需要能够代表uint32_t
可以采用的所有值.
归档时间: |
|
查看次数: |
1298 次 |
最近记录: |