输出不同类型的整数,需要使用不用的格式限定符。输出 Unsigned Int 类型的整数,要用 %U。输出 Long ,要用 %Ld;如果要以十六进制或者八进制形式输出,那就用 %Lx(或者%LX)或者 %Lo。注意:虽然整数常量的后缀使用大写或者小写英文字母都没关系,但是它们格式限定符必须使用小写!如果我们要输出 Short 类型的整数,可以在 %D 中间加上前缀H,也就是%Hd;同理,%Ho 和 %Hx(或者 %HX )分别表示以八进制或十六进制形式输出。前缀 H 和 L 可以和 U 组合,表示输出无符号整数。例如:%Lu 表示输出 Unsigned Long 类型的整数;%Hu 表示输出Unsigned Short类型的整数。如果您的编译器支持C99,可以使用 %Lld 和 %Llu 分别表示输出 Long Long 和 Unsigned Long Long 。下面我们来看一个输出各种类型整数的程序:
#Include <Stdio.H>
Int Main(Void)
{
Unsigned Int Un = 3000000000; /* 我使用的编译器 Int 是 32 位的 */
然后,对于第二个 Printf,无论我们使用 %Hd 还是 %D,输出的结果都是一样的。这是因为 C 语言标准规定,当 Short 类型值传递给函数时,要自动转化成 Int 类型值。之所以转化成 Int,是因为 Int 被设计为计算机处理效率最高的整数类型。所以,对于 Short 和 Int 大小不同的计算机来说,把变量 End 转化成 Int 类型再传递给函数,速度更快。如此说来,H 好像没有存在意义。其实不然。我们可以用 %Hd 来看看较大的整数类型被截断成 Short 类型的时候会是什么样的。