免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2978 | 回复: 10
打印 上一主题 下一主题

求助关于printf的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-09 18:34 |只看该作者 |倒序浏览
这个为什么会出错。。
#printf "%02d" 09
bash: printf: 09: invalid number

而执行下边这个就没问题?
#printf "%02d" 07
07

论坛徽章:
0
2 [报告]
发表于 2008-09-09 18:40 |只看该作者
原帖由 jlu204 于 2008-9-9 18:34 发表
这个为什么会出错。。
#printf "%02d" 09
bash: printf: 09: invalid number

而执行下边这个就没问题?
#printf "%02d" 07
07

09被认为是8进制数,当然被报错了

论坛徽章:
0
3 [报告]
发表于 2008-09-09 19:14 |只看该作者
试试
printf "%d" 011

论坛徽章:
0
4 [报告]
发表于 2008-09-09 21:54 |只看该作者
原帖由 cuteorange 于 2008-9-9 18:40 发表

09被认为是8进制数,当然被报错了


为什么会这样?
貌似只有08,09会出现这个效果。其他的没发现

现在下班了 。没有linux环境。

论坛徽章:
0
5 [报告]
发表于 2008-09-09 21:56 |只看该作者
原帖由 jlu204 于 2008-9-9 21:54 发表


为什么会这样?
貌似只有08,09会出现这个效果。其他的没发现

现在下班了 。没有linux环境。

printf命令和C标准库里的函数用法一样。八进制数字范围是0~7, 用08/09当然出错了哦

论坛徽章:
0
6 [报告]
发表于 2008-09-09 22:26 |只看该作者
printf "%d" 这个不是打印 十进制整数吗?

怎么会认为是8进制?

n=0
for (( ;n<=11; ++n ))
do
        printf "%02d\n" $n
done
~

这个就可以正常输出。但是要单独输出 printf"%02d" 09就会出错。。
C那些东西,当初学完了就没怎么用过。都还给老师了。

论坛徽章:
1
处女座
日期:2014-12-23 17:59:27
7 [报告]
发表于 2008-09-09 22:39 |只看该作者
原帖由 jlu204 于 2008-9-9 22:26 发表
printf "%d" 这个不是打印 十进制整数吗?

怎么会认为是8进制?

n=0
for (( ;n

printf "%02d" 9

论坛徽章:
0
8 [报告]
发表于 2008-09-09 22:39 |只看该作者
原帖由 jlu204 于 2008-9-9 22:26 发表
printf "%d" 这个不是打印 十进制整数吗?

怎么会认为是8进制?

n=0
for (( ;n

以0开始的数字,被当成8进制数;以0x开始的数字,被当成16进制数

论坛徽章:
0
9 [报告]
发表于 2008-09-09 22:43 |只看该作者
这个我猜是这样的。0打头的是八进制数的表示方法,八进制只有0-7 个字分别对应举例
八进制--十进制
01         1
02         2
。。。
06         6
07         7
010       8   
011       9

你的pintf "20d%" 09  的意思是把八进制数09 (不存在),打印成十进制数
不存在当然报错


主要问题在那个0

论坛徽章:
0
10 [报告]
发表于 2008-09-09 22:56 |只看该作者
哦。。明白了 。谢谢诸位的帮助。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP