C语言格式化输出
格式化说明符的一般语法
% []
libc 和 vscrt 的整数说明符
printf函数,输出整数,
ll i,d,o,u,x 输出一字节宽度的数据;但是win32/win64不支持,在win32/win64上,支持的最短整型是short
z i,d,o,u,x 输出 size_t 类型的整数(C99),但win32/win64不支持,在win32/win64上,用 %Iu
j i,d,o,u,x 输出 intmax_t, uintmax_t(C99),但win32/win64上,只能自行判定intmax_t的位数,选择用 I32, I64 代替 j
t i,d,o,u,x 输出指针相减得到的整数(C99),但win32/win64上,只能用 %Id,%Ii
C99之前,size_t一般用 %u, 有些用 %lu。
C规定long 至少32位,long long 至少64位(如果支持long long类型)。
vc 家族,vc6.0是不支持c99新版说明符的。
gcc MinGW 的gcc 使用的是 crt6.0版本,所以 j,ll 都不能使用;但是,MinGW重新实现了printf,添加__USE_MINGW_ANSI_STDIO
宏定义即可支持C99新增的说明符。
gcc -D__USE_MINGW_ANSI_STDIO=1 test.c -o test
参考
glibc 文档 https://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html#Formatted-Output