鱼C论坛

 找回密码
 立即注册
查看: 3721|回复: 6

[已解决]0基础学c求大佬解释代码含义

[复制链接]
发表于 2022-7-27 23:25:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        printf("打印五个字符:%c %c %c %c %c\n", 70, 105, 115, 104, 67);
        printf("前边用 填充:%10d\n", 2015);
        printf("前边用0填充:%010d\n", 2015);
        printf("右对齐,保留2位:%10.2f\n", 3.1416);
        printf("左对齐,保留3位:%-10.3f\n", 3.1416);
        printf("右对齐,指数形式:%10e\n", 520000.0);
        printf("左对齐,指数形式:%-10E\n", 520000.0);


第一行通过查ascII得到转换字母
第四行的10代表十个空位取小数点后俩位
第五行加了负号表示从左边开始十个空位取小数点后三位
后面2行的%E的意思是转换成指数形式
请问大佬我这几行理解是对的吗

还有想问问第二行是第三行不是很懂代码含义,想听听大佬的耐心解释,谢谢谢谢
最佳答案
2022-7-28 17:56:58
输出的格式是 % [标志][宽度][.精度][长度]转换字符类型   
%10d:表示的含义就是 %[宽度 = 10]转换类型 = d
%010d:表示的含义是 %[标志 = 0][宽度 = 10] 转换类型 = d
%10d :10表示输出字符数宽度为10个字符。由于没有“-”号,所以是默认是右对齐,由于 没有设置标志所以默认用空格填充。2015 只占4个字符宽度 在 其 左边填充 6 个空格。
%10d :10表示输出字符数宽度为10个字符。由于没有“-”号,所以是默认是右对齐,由于 设置标志 = 0 所以用 0 填充。2015 只占4个字符宽度 在 其 左边填充 6 个 0。
同理举几个例子
%-03d:表示的含义是 %[标志 = -0][宽度 = 6] 转换类型 = d
所以 其表示的含义就是 输出字符宽度为6个字符。由于标志为“-0”,所以是左对齐,用0填充,2015 只占4个字符宽度 在 其 右边填充 2 个 0。
%-10.3f:表示含义是%[标志 = -][宽度 = 10][ .精度 = .3 ]转换类型 = f(f表示double类型;以小数形式输出浮点数)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-27 23:26:30 | 显示全部楼层
是那个S1E4的课后作业最后一项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-27 23:39:35 | 显示全部楼层
本帖最后由 jackz007 于 2022-7-27 23:40 编辑
永远Forever 发表于 2022-7-27 23:26
是那个S1E4的课后作业最后一项

        printf("前边用 填充:%10d\n", 2015)        ; // 以右对齐的形式在 10 个字符的空间内打印输出 2015,左边用 6 个空格进行填充。
        printf("前边用0填充:%010d\n", 2015)       ; // 以右对齐的形式在 10 个字符的空间内打印输出 2015,左边用 6 个 0 进行填充。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-28 17:56:58 | 显示全部楼层    本楼为最佳答案   
输出的格式是 % [标志][宽度][.精度][长度]转换字符类型   
%10d:表示的含义就是 %[宽度 = 10]转换类型 = d
%010d:表示的含义是 %[标志 = 0][宽度 = 10] 转换类型 = d
%10d :10表示输出字符数宽度为10个字符。由于没有“-”号,所以是默认是右对齐,由于 没有设置标志所以默认用空格填充。2015 只占4个字符宽度 在 其 左边填充 6 个空格。
%10d :10表示输出字符数宽度为10个字符。由于没有“-”号,所以是默认是右对齐,由于 设置标志 = 0 所以用 0 填充。2015 只占4个字符宽度 在 其 左边填充 6 个 0。
同理举几个例子
%-03d:表示的含义是 %[标志 = -0][宽度 = 6] 转换类型 = d
所以 其表示的含义就是 输出字符宽度为6个字符。由于标志为“-0”,所以是左对齐,用0填充,2015 只占4个字符宽度 在 其 右边填充 2 个 0。
%-10.3f:表示含义是%[标志 = -][宽度 = 10][ .精度 = .3 ]转换类型 = f(f表示double类型;以小数形式输出浮点数)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-28 22:57:06 | 显示全部楼层
18199673236 发表于 2022-7-28 17:56
输出的格式是 % [标志][宽度][.精度][长度]转换字符类型   
%10d:表示的含义就是 %[宽度 = 10]转换类型 =  ...

那大佬我想问下,我把标志换成1 为什么执行之后显示的不是6个1嘞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 13:10:59 | 显示全部楼层
标志只能填充为零
详情可见小甲鱼整理的  printf文档  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-29 13:27:46 | 显示全部楼层
补充:原文档中关于 [flags](标志)[width](宽度)是这样描述的  
%[flags][width][.precision][length]specifier    译为    % [标志][宽度][.精度][长度]转换字符类型

flags可选参数有 “ + ”、“ - ”、“空格”、“ 0 ”、“ # ”     (1不在可选参数中哦

width(宽度、可选)是一个数值,用于指定最小字段的宽度
          转换后的参数输出宽度至少要达到这个数值。
   如:参数的字符数   <   该数值 ,则在参数左边(如果flags设置为“ - ”,要求左对齐的话则在右边)填充一些字符。         填充字符通常为空格但如果flags设置为“ 0 ”,则填充字符为数字“ 0 ”.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 19:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表