控制“printf”输出总结

类型:

  1. %d:以十进制形式输出带符号整数(正数不带正号)。
  2. %o:以八进制形式输出无符号整数(不输出前缀0)。
  3. %x or %X:以十六进制形式输出无符号整数(不输出前缀0x)。
  4. %u:以十进制形式输出无符号整数。
  5. %f:以小数形式输出单,双精度实数。
  6. %e or %E:以指数形式输出单,双精度实数。
  7. %g or %G:以%f或%e中较短宽度输出单,双精度实数。
  8. %c:输出单个字符。
  9. %s:输出字符串。

符号:

  1. “-”:结果左对齐,右边填空格。
  2. “+”:输出符号(正号或者符号)。
  3. “空格”:输出值为正时冠以空格,为负时冠以负号。
  4. “#”:对c,s,d,u无影响,对 o 类,在输出时加前缀 o;对 x 类,在输出时加前缀 0x;对 e,g,f 类当结果有小数时才给出小数点。

输出宽度:
用十进制来表示输出最少位数,若少于指定位数,按定义补零或空格,反之,按实际输出。

精度:
用“.”表示,后接十进制数。
对数字:表示输出小数位数。
对字符:表示输出字符个数。
注:如果输出长于定义,则会截取超出部分。

长度:
长度格式符:“h",“l”,h为短整型输出,l为长整型输出。
long int 输出 4 字节。
short int 输出 2 字节, (砍去2字节,再转换为10进制)

代码示例:(对于输出的宽度和右对齐补0等操作字符串,整型,和浮点数都是相同的,我就在整型举例,后面就不在赘述了。)

/*对整型操作*/ 
	int a = 123456;
	// 123456 正常输出 
	printf( "%d\n", a );
	
	// 123456 定义宽度少于输出,按实际输出 
	printf( "%3d\n", a );
	
	// 空格空格空格123456 默认右对齐,左边补空格
	printf( "%9d\n", a );
	
	// 000123456 默认右对齐,定义左补0 
	printf( "%09d\n", a );
	
	// 123456空格空格空格 左对齐,右补空格 
	printf( "%-9d\n", a ); 
	
	// 123456空格空格空格 ~~那我们控制输出左对齐,补0,失败~~  
	printf( "%-09d\n", a );
	//我也不知道为什么无法左对齐,右补0 

/*对浮点型操作*/
	double b = 3.14159;
	// 3.14159 正常输出 
	printf( "%lf\n", b );
	
	// 3.1415 对小数位进行控制
	printf( "%.4lf\n", b );
	
	// 3. #号对浮点的操作
/*有小数位数输出保留小数点,无时则不保留小数点*/ 
	printf( "%#.0lf\n", b );
/*对字符串操作*/
	char s[] = "abcdef";
	// abcdef 一般输出 
	printf( "%s\n", s );
	// abc 控制输出长度 
	printf( "%.3s\n", s ); 
	// 空格abc 控制输出长度和宽度。
	printf( "%4.3s\n", s );

补充:
对于宽度和小数点位数(或者字符串输出长度)都可以用输入来控制
例:

	double c = 123456;
	printf( "%*.*lf", 20, 5, c);
	//输出长度为20,小数位为5位,整型字符串同理。

疑惑:
对于左对齐右边补充0,该如何用printf实现呢?

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是丝豆呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值