*** 说明符决定数据的显示方式而不是决定数据的存储方式。数据存储都是以ASCII码存储的。
1、 %d符号用于指示一行中的什么位置打印整数,%d被称为格式说明符,每个%d对应打印项目中的一个int值。
(这个值可以是 int变量、int常量或者其他的值为int类型的表达式)。
2、 %o——八进制显示整数。
3、 %x——十六进制显示整数。
4、 如果想显示C语言前缀,使用说明符%#o、%#x和%#X分别生成前缀0、0x和0X前缀。
5、 打印unsigned int数字,使用%u。
6、 打印long数值,使用%ld格式说明符。(如果系统的int和long类型具有同样的长度,使用%d就可以打印long数值)
但是这会给程序移植到其他系统(这两种数据类型的长度不一样的系统)带来麻烦。故使用%ld打印long数值。
7、 %lx表示以十六进制格式打印长整数,
%lo表示以八进制格式打印长整数。(注意:尽管C中常量后缀可以使用大写和小写,但格式说明符只能使用小写字母。)
8、 可以对short类型使用h前缀,
%hd表示以十进制显示short整数,
(无论使用%hd还是%d,short类型变量最终的显示结果相同,
因为在传递函数参数时C自动将short类型的值转化为int类型。
int类型被认为是计算机处理起来最方便有效的整数类型。)
%ho表示以八进制显示short整数。
9、 h和l前缀都可以同u结合使用以表示无符号类型。
%lu表示打印unsigned long类型
%hu表示打印unsigned short类型
10、 支持long long类型的系统使用%lld和%llu分别表示有符号类型和无符号类型。
11、 char类型用于存储字母和标点符号之类的字符。但在技术实现上char却是整数类型。
为了处理字符,计算机使用一种数字编码,用特定的整数表示特定的字符。美国常用的是ASCII码。
12、%c说明符表示打印一个字符。(字符变量被存储为1字节长 [ 8位 ] 的整数值)
char类型的有无符号由编译器决定。有符号(-128—127)。无符号(0—255)。
编译器手册会指明char的符号类型。或者limits.h头文件查。
13、%f格式说明符表示打印十进制计数法的float和double数字。
14、%e打印指数计数法的数字。(如果系统支持C99的十六进制格式浮点数,还可以使用 a 或 A 代替 e 或 E。)
15、打印long double类型需要%Lf、%Le和%La说明符。
(注意 float 和 double 类型的输出都使用%f、%e 或 %a说明符,
这是由于当它们向那些未在原型中显示说明参数类型的函数(如printf() )传递参数时,
C自动将float类型的参数转换成double类型。)
%5.2f ——字段宽度为5个字符,小数点后有两个数字。
#include
#define TEST 123
int main (void)
{
printf("*%d*\n", TEST);
printf("*%2d*\n", TEST);
printf("*%10d*\n", TEST);
printf("*%-10d*\n", TEST);
return 0;
}
运行结果为:
第一个转换说明是不带任何修饰符的%d.它生成了一个与要打印的整数宽度相同的字段。这是默认选项:也就是说,如果没有进一步给出命令,这就是打印的结果。
第二个转换说明是%2d。它指示应该产生宽度为2的字段,但是由于该整数有3位数字,所以字段自动扩展以适应数字的长度。
第三个转换说明是%10d。这将产生一个有10个空格那么宽的字段,于是在星号之间有7个空白和3个数字,并且数字位于整个字段右端。
最后一个说明是%-10d。它也产生宽10个空格的字段,标志“-”把数字放在左端。