有关 字段宽度的小问题

LI-O 2013-03-17 11:58:27
#include<stdio.h>
#define PAGES 931
int main(void)
{
printf("*%d*\n",PAGES);
printf("*%4d*\n",PAGES);
printf("*%10d*\n",PAGES);
printf("*-10d*\n",PAGES);
return 0;
}

结果是
*931*
* 931*
* 931*
*-10d*
首先。。。 在原结果 *931* 是5个宽度。
在第二个printf中 声明了 是4个宽度。。
为什么结果是 * 931* ?/这不是6个宽度。。。
还请哪个大哥解释下。。。。
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-03-19
  • 打赏
  • 举报
回复
对学习编程者的忠告: 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步对应汇编一行!
LI-O 2013-03-19
  • 打赏
  • 举报
回复
谢谢大家了。。。 因为无聊所以学习。。 囧
LI-O 2013-03-18
  • 打赏
  • 举报
回复
仔细看了看书,,,很操蛋的是,,, 好像 没有把 星号 算进去。所以上面的问题已经解决,, 可是。。。明明 星号 也是与 数字一样被输出,为什么被区别对待。。 是因为 这种“宽度” 只对数字有效????
zybjtu 2013-03-18
  • 打赏
  • 举报
回复
这么说吧,其实后面的参数是用来替代前面的%d的。所以%d所做的格式控制也仅对参数有效。
ForestDB 2013-03-18
  • 打赏
  • 举报
回复
在跑之前先学会走。 在想着自己想的东西之前,先把printf的文档好好看明白,你想的那个需求,是需要自己额外写代码的。
LI-O 2013-03-18
  • 打赏
  • 举报
回复
引用 5 楼 yangyangsnr 的回复:
引用 4 楼 w15tp 的回复:怎么使 宽度对于 字符和数字总体有效?? …… printf()函数的调用格式为: printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出,这部分和后面的参量是无关的——比如你这段代码中的*; 另一部分是格式化规定字符, 以%开始,……
呵呵///谢谢了/// 那 也就是说。。。%d4 之类的东西都是对于 双引号 后面的那个东西 负责的。。其相互之间无法相互管制。。。
孤雲独去闲 2013-03-18
  • 打赏
  • 举报
回复
引用 4 楼 w15tp 的回复:
怎么使 宽度对于 字符和数字总体有效?? ……
printf()函数的调用格式为: printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出,这部分和后面的参量是无关的——比如你这段代码中的*; 另一部分是格式化规定字符, 以%开始, 定义格式为:%[flags][width][.perc][F|N|h|l]type,中括号里的内容是可选的,分别代表%[输出格式][输出宽度][小数点位数][表示指针是否是远指针或整数是否是长整数(这个我也一直没用过,具体什么用我也不清楚)]输出项的数据类型,其中只有type是一定要有的,这个只是用来控制后面参量表相应的参量的,是控制不了格式化字符串的字符的———例如你这段代码中的%4d,就是对于参量PAGES,指明其输出宽度4,输出有符号10进制整数,而对于格式化字符串里的*是没有作用的。 这样写明白了吧? 有种做老师的感觉
LI-O 2013-03-18
  • 打赏
  • 举报
回复
引用 2 楼 yangyangsnr 的回复:
这个宽度确实只对数字有效,参数%d说明输出一个整型数据,中间加个4仅是说明该数据占4个宽度,仅对%d有效。printf("*%4d*\n",PAGES); 相当于C/C++ code?123printf("*");printf("%4d",PAGES);printf("*\n",PAGES);
怎么使 宽度对于 字符和数字总体有效?? 就是说,,在这个例子里面 也把星号算进在内。。。 请问有什么方法。。。 如果要求是对与字符有效 是不是。。 将 %4d改为 %4c???
孤雲独去闲 2013-03-18
  • 打赏
  • 举报
回复
这个宽度确实只对数字有效,参数%d说明输出一个整型数据,中间加个4仅是说明该数据占4个宽度,仅对%d有效。printf("*%4d*\n",PAGES); 相当于

printf("*");
printf("%4d",PAGES);
printf("*\n",PAGES);

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧