tra*_*rad 3 c printf conversion-specifier length-modifiers
请考虑以下代码:
#include <stdio.h>
#include <inttypes.h>
void main(void)
{
int32_t a = 44;
fprintf(stdout, "%d\n", a);
fprintf(stdout, "%"PRId32"\n", a);
}
Run Code Online (Sandbox Code Playgroud)
什么时候使用%d更好,"%"PRId32什么时候使用会更好?这两种格式字符有何不同?这是否与int32_t您的硬件/机器上的typedeffed有关?
使用%d了int和PRId32为int32_t.
也许在你的平台int32_t上只是一个typedef int但是一般来说这不是真的.使用错误的说明符会调用未定义的行为,应该避免使用.
正如@EricPostpischil指出的那样,在外部%d使用时,在引用的格式字符串PRId32中使用.原因是它PRId32是一个宏,它扩展为字符串文字然后连接.