你我什么时候
有过自由

Printf的转换说明修饰符

在转换说明中插入修饰符,可以有效的限制数据的输入和输出,以及正确排列

从昨天,我就开始有些遗忘所学过的知识,所以现在重温一下

转换说明修饰符

实例

A.

‘%’后面加上某个数字可以代表最小字符宽度,对于%d(有符号十进制整数来说)

比如cost=10,那么%2d正好满足10这个字符的限制,那么%3d,调试的时候系统就需要在前面加上空格,来满足最小三位宽度的需求

B.

‘%’后面加上某个数字可以代表最小字符宽度,

对于%e(e计数法)

float=12.75,那么%2e,那么就是1.28e3

对于%1e那么就是1.3e3,因为四舍五入

对于%3e那么就是1.275e3

对于%f(十进制浮点数)来说

float=12.75,对于%.2f的来说就是小数点保留两位数字,调试之后会是12.75

对于%1f来说,小数点后面保留一位,但是cost=12.75后面有两位,那么就要四舍五入,那么调试后将会是12.8

对于%3f来说,小数点保留三位,那么将会是12.750

C.

”%g’表示的是会在%f和%e自动选择,那么在%g加上数字就是有效数字最大位数,但是不输出无意义的0!!!

cake=12.75

那么%2g那么1.3

%3g就是1.28e1

D.

在字段限制前面加上0表示不再用空格填充未饱和的字段而是0

比如cost=10,

如果printf(“%5d”,cost),那么调试结果就是‘ 10’

如果用前导0,那么就是,另一种结果

printf(“%05d”)那么就是(‘00010’)

E.

在字符串%s中间加上数字也是限制字符最低数量,举个例子

#define hope "extraordinay"

正常表示(不做限制)

printf("%s",hope);

那么调试之后就是‘extraprdinay’

限制最低字符数

printf("%5s",hope);

那么调试后就是’extraordinary’

超出规定字符

超出就用空格补齐

printf("%15s",hope);

那么调试之后就会是’ extraordinary’

限制字符数显示

printf("%15.5s",hope)

那么调试的就是‘ extra’,由此看出这个是从左边打印的!

printf(“-%15.5s".hope)

那么控制台就会显示‘extra ‘

G.

如果加上’+‘号,那么正的会显示加号,负的会显示-号

pritnf(”+5.2f“,cake)

那么调试之后就会显示‘ +12.99’

H.

printf("%o",cost)

那么调试之后将会是12

printf("%#o",cost)

那么调试后就是012

I.

cost=10,那么正常用十六进制表达就是

printf("%x",cost)

那么调试台结果就是’a’

printf("%#x",cost)

加上’#‘调试结果就是’0xa‘

J.

’%#g‘可以保证后面,即使没有零,打印的时候也有零的存在

#include <stdio.h>
int main(void)
{
	float cost = 10;
	printf("%g \n", cost);//正常表示
	printf("%#g \n", cost);//用#表示
	return 0;
}

正常输出结果为

赞(1)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享下

点击登机网盘