修饰符 u、o、x 与 X 把对应的参数解释为无符号整数。如果参数类型是 int,并且其值是负数,则转换后输出的是对应参数按照无符号整数解释时其位模式下的正数值:
如果 int 为 32 位宽,那么该语句会产生下面的输出:
-1 4294967295 FFFFFFFF 因为参数会受到整数提升的影响,同样的转换修饰符可以被用来格式化 short 和 unsigned short 参数。对于类型是 long 或 unsigned long 的参数,必须在 d、i、u、o、x 和 X 修饰符前面加上长度修饰符 l(小写的 L)。类似地,如果参数是 long long 或 unsigned long long 类型,则其长度修饰符是 ll(两个小写 L)。
输出浮点数
表 3 列出了函数 printf()用来格式化输出浮点数的转换修饰符。
最常用的修饰符是 f 和 e(或 E)。下面的例子展示了它们的用法:
1. double x = 12.34;
2. printf( "%f %e %E ", x, x, x );
该 printf()调用将产生下面的输出:
12.340000 1.234000e+01 1.234000E+01
在指数表示法中出现的 e 是大写还是小写,取决于函数转换修饰符中所用 e 的大小写。而且,如上例所示,默认输出显示精度为 6 位小数。转换修饰符中的精度选项可修改这个默认设置: