输入与输出肯定要用的printf函数与scanf函数,他们都不可或缺地会用到格式占位符
在C语言中,格式占位符(format specifier)是用于指定如何格式化地输入或输出数据的符号,通常在 printf
或 scanf
函数中使用。不同的数据类型有对应的格式占位符,用来告诉编译器如何解释变量的值。
下面是一些常用的格式占位符:
整数类型(主要对应int、short、long、long long)
%d
或%i
:用于有符号(其实就是正负都行,与unsigned int 相对而已)的十进制整数(int
类型)。- 示例:
printf("%d", 10); // 输出:10
- %i不常用,但是却真的有
- 示例:
以下都是无符号,我感觉并不常用
%u
:用于无符号十进制整数(unsigned int
类型)。- 示例:
printf("%u", 10); // 输出:10
- 示例:
%x
:用于无符号的十六进制整数,使用小写字母(unsigned int
类型)。- 示例:
printf("%x", 255); // 输出:ff
- 也就是说,你所选用的格式占位符是针对变量的类型来决定的,255是十六进制格式中的ff,所以你得选用%x,这样编译器才会理解你输入的数据是什么
- C语言中是区分大小写的,所以%x与%X是有区别的!
- 示例:
%X
:用于无符号的十六进制整数,使用大写字母。- 示例:
printf("%X", 255); // 输出:FF
- 示例:
%o
:用于无符号的八进制整数(unsigned int
类型)。- 示例:
printf("%o", 8); // 输出:10
- 示例:
浮点类型(主要对应float、double)
%f
:用于输出浮点数(float
或double
类型均可),默认情况下保留6位小数。- 示例:
printf("%f", 3.14); // 输出:3.140000
- 示例:
%e
:以科学计数法的形式输出浮点数(小写e
表示指数部分)。- 示例:
printf("%e", 12345.678); // 输出:1.234568e+04
- 示例:
在C语言中,1.234568e+04 和 1.234568e4 都是科学计数法的表示方式,本质上 没有任何数值上的区别。它们都表示同一个值,即 12345.68。它们的区别仅在于书写形式:e+04 和 e4 都表示乘以 104104,即将小数点向右移动 4 位。+ 符号是可选的,e+04 和 e4 表示的乘法效果相同。
因此,1.234568e+04
和 1.234568e4
数值相同,都是 12345.68,仅在表示上稍有不同
%E
:同样以科学计数法输出,但使用大写E
表示指数部分。- 示例:
printf("%E", 12345.678); // 输出:1.234568E+04
- 哈哈,感觉小写大写e在这里没什么区别(bushi
- 示例:
%g
:根据数值的大小自动选择%f
或%e
格式,去掉不必要的零。- 示例:
printf("%g", 12345.678); // 输出:12345.7
- 示例:
字符和字符串类型(主要对应char)
%c
:用于输出单个字符。- 示例:
printf("%c", 'A'); // 输出:A
- 示例:
%s
:用于输出字符串。- 示例:
printf("%s", "Hello"); // 输出:Hello
- 示例:
指针类型
%p
:用于输出指针的值(内存地址)。- 示例:
printf("%p", ptr); // 输出指针地址
- 示例:
其他
%%
:用于输出%
符号本身。- 示例:
printf("%%"); // 输出:%
- 示例:
常用修饰符
- 宽度和精度:你可以通过数字指定最小宽度或小数位数,例如:
%.2f
:保留两位小数。
%10d
:输出的整数至少占10个字符宽度
在默认情况下,数值是右对齐的,如果宽度指定得比实际内容要大,内容会向右靠,空白就会出现在左边,所以不必惊讶
eg:printf("%.2f", 3.14159); // 输出:3.14
printf("%10d", 5); // 输出: 5
这些格式占位符为数据的格式化输出提供了灵活性,帮助你根据不同的数据类型生成你想要的输出结果。
既然谈到了格式占位符,下面给出详细介绍
1.让空白出现在左边:通过在宽度前加上负号 -
,便可以让内容左对齐,右边补空格。
eg:printf("%-5d\n", 42); // 输出:"42 "
2.用零填充: 通过在宽度前加上 0
,可以用 0
来填充左侧的空位,而不是空格。
eg:printf("%05d\n", 42); // 输出: "00042"
宽度结合精度
3.当你需要同时控制小数点后位数(精度)和总输出宽度时,可以同时使用宽度和精度控制符来实现
eg:printf("%8.3f\n", 3.14159); // 输出:" 3.142"
这里 %8.3f
表示输出的总宽度为8,小数点后保留3位。(注意:这里的小数点也是一个字符宽度)
Comments 1 条评论
博主 88888888
一giao我里giaogiao
╮( ̄▽ ̄)╭