c语言格式控制参数
一、整数的格式控制参数
(1) %d
%d 十进制有符号整数(int)
(2) %md
%md
与%d相比用m限制了输出的数据位数。当数据的位数小于m时前面补空格
当位数大于m时,数据按原数输出。

(3) %ld
%ld 十进制有符号长整数(long int或long)
(4) %u
%u 十进制无符号整数(unsigned int)
(5) %mu
%mu
与%u相比用m限制了输出的数据位数。当数据的位数小于m时前面补空格
当位数大于m时,数据按原数输出。
(6) %lu
%lu 十进制无符号长整数(unsigned long int或unsigned long)
(7) %o(这是英文字母o)
%o(这是英文字母o) 以八进制输出
(8) %#o
%#o(这是英文字母o) 输出时显示八进制前缀
(9) %0x(这里是零)和%x 和%X %0X
%0x(这里是零) 以十六进制数输出 小写
%x 以十六进制数输出 小写
%X 以十六进制数输出 字母是大写的
%0X 以十六进制数输出 字母是大写的

(10) %#0x
%#0x(这里是零) 输出时显示十六进制前缀

(11) %lld
%lld 输出 long long (int) 型
(12)%llu
%llu 输出 unsigned long long (int) 型
二、浮点数(实数)格式控制参数
(1) %f
%f 输出(十进制)单精度浮点数或者双精度浮点数,整数部分全部输出小数部分为6位。
(2) %lf
%lf 输出(十进制)双精度浮点数,整数部分全部输出小数部分为6位。


可以看出用%f输出双精度浮点数效果和用%lf一样,不会失真。
用%lf输出单精度浮点数效果和%f一样,并不会出错。
而 scanf 输入情况下 double 必须用 %lf,float %f 和%lf可以混用。


可以看出在scanf()中double 只能用%lf,而float可以用%f和%lf。
注意: 我们可以发现输出的小数位数最后一位会自动的四舍五入。
(3) %m.nf 和 %-m.nf
%m.nf 和 %-m.nf 以固定的格式输出浮点数。
m指的是 包括小数点 在内的位数,n是指小数点后的位数。
当总的数据位数小于m时,数据左端补零。如果大于m则原样输出整数,小数位跟n参数的大小 来定。
n参数来控制小数点后的位数,最后一位四舍五入。当小数点后的位数大于n时截取
到小数点后的第n位且第n位四舍五入。当n大于6这时输出的数据最后几位会失真,
这是因为浮点数的精度为小数点后后六位。

如果是%m.0f则不输出小数部分,包括小数点。

%-m.nf 和 %m.nf的功能一样,不过加了一个数据左对齐,右端补空格。

(4) %e
%e 以科学计数法输出浮点数
这里补充一下浮点数变科学计数的规则:E或e的前面必须有数,
E或e的后面必须是整数。这里的E或e值的是10。

(5) %le
%le %le意思是用科学计数法输出的double数据。
其中%l表示双精度数据double,e表示科学计数法,也就是指数形式。
(6) %g
%g 用来输出浮点数,它根据数值的大小自动选f格式(一般的小数格式)或e格式(科学计数法格式)。
它的选择标准为输出时占宽度较小的一种。且%g不输出无意义的0。
如果%g没有指定精度(单纯的%g),采用默认值,输出六位有效。

== 可以看出默认的有效数字是6位。==

可以看出%g不会输出无意义的0。
三、字符的格式控制参数
%c
%c 输出单个字符
%s
%s 输出字符串
%m.ns 和 %-m.ns
%m.ns 输出m位的字符从字符串的左端开始截取n位的字符,如果字符的个数大于m则输出全部字符;

如果n位小于m位,则左端补空格。

== 如果说n大于m则从字符串的左端开始截取n位的字符。==

== %-m.ns与%m.ns相比是右端补空格。==
四、其他
%%
%% 输出%号
%n
%n用于接受一个uint,代表到%n为止所输入的字符数,其本身不消耗字符
用于 scanf() 中

如上图: 1234 共四个字符 将4赋值给b
目前 %n 不经常使用
%0
%0格式控制符,输出数值时指定左面不使用的空位置自动填0。

本文详细解析了C语言中各种格式控制参数的使用方法,包括整数、浮点数、字符及特殊格式的输出控制,适合初学者和进阶者深入理解C语言的格式化输出。

被折叠的 条评论
为什么被折叠?



