printf()的參數格式如下所示
%[flags][width][.precision][size]type
其中,第四個域size在指定了type的取值範圍。
1 以其他格式打印字符
當size域是hh,且type是d,i,o,u,x或者X時,表示以十進制整型、八進制、無符號或者十六進制的格式打印字符。
char c = 0xf0;
printf("%c", c);
此時打印的字符不可見。
printf("%x", c);
此時的輸出是fffffff0,很明顯超出了c的範圍。
printf("%hhx", c);
此時的輸出是f0。
2 以其他格式打印短整型
當size域是h,且type是d,i,o,u,x或者X時,表示以十進制整型、八進制、無符號或者十六進制的格式打印短整型。
3 以其他格式打印長整型
當size域是l,且type是d,i,o,u,x或者X時,表示以十進制整型、八進制、無符號或者十六進制的格式打印長整型。
4 以其他格式打印long long整型
當size域是ll,且type是d,i,o,u,x或者X時,表示以十進制整型、八進制、無符號或者十六進制的格式打印long long整型。
long long int li = 9223372036854775807;
printf("%d", li);
此時顯示的是是“-1”,可以使用如下方法正確打印出li:
printf("%lld", li);