回 帖 发 新 帖 刷新版面

主题:[讨论]关于入门必须做的题目的第一题

其中这两句不理解

printf("%*d%2d%2d\n", 6, d, 5, 0);
printf("+%*d%2d%2d\n", 5, d, 5, 0);

请问%*d是什么意思?我把6,去了他为什么乱序输出?

请各位高人赐教。谢谢!

回复列表 (共6个回复)

沙发


刚查到%后的"*"附加说明符,用来表示跳过它相应的数据。但是这里如果跳过一个的话,不是应该只输出两个字符吗?

板凳

我也是个新手不知道怎么回事
这是运行结果:
-858993460 5 0
+-858993460 5 0
Press any key to continue
不理解-858993460是什么意思
请各位指教
谢谢

3 楼

我也不是很清楚,但根据你的说明,我猜测到了.
"*"附加说明符,用来表示跳过它相应的数据---即跳过 6 ,但它会输出 6 之后的数据:
例 printf("%*d\n",6,d); 时,,跳过 6 输出 d 的值.如果定义 d 为整数. d 没赋值,则输出一个随机数,我的机子输出的是 0 ;

4 楼

我是新手请大家帮我一下我的QQ群号是63241360 大家可以进去一起讨论

5 楼


格式说明“*”允许对应的数据不输出

6 楼

*只用于scanf,貌似没有用于printf的。貌似用于printf时会跳过一个再输出,但%*d还会输出,只不过它相当于跳过一个输出下一个吧。没仔细研究过,不知道标准里是怎么说的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册