有关 字段宽度的小疑点

有关 字段宽度的小问题
#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个宽度。。。
        还请哪个大哥解释下。。。。

------解决方案--------------------
引用:
怎么使  宽度对于  字符和数字总体有效??
 ……


printf()函数的调用格式为:
printf("<格式化字符串>", <参量表>);

其中格式化字符串包括两部分内容:
    一部分是正常字符, 这些字符将按原样输出,这部分和后面的参量是无关的——比如你这段代码中的*;
另一部分是格式化规定字符, 以%开始, 定义格式为:%[flags][width][.perc][F
------解决方案--------------------
N
------解决方案--------------------
h
------解决方案--------------------
l]type,中括号里的内容是可选的,分别代表%[输出格式][输出宽度][小数点位数][表示指针是否是远指针或整数是否是长整数(这个我也一直没用过,具体什么用我也不清楚)]输出项的数据类型,其中只有type是一定要有的,这个只是用来控制后面参量表相应的参量的,是控制不了格式化字符串的字符的———例如你这段代码中的%4d,就是对于参量PAGES,指明其输出宽度4,输出有符号10进制整数,而对于格式化字符串里的*是没有作用的。

这样写明白了吧?有关  字段宽度的小疑点

有种做老师的感觉有关  字段宽度的小疑点
------解决方案--------------------
在跑之前先学会走。
在想着自己想的东西之前,先把printf的文档好好看明白,你想的那个需求,是需要自己额外写代码的。

------解决方案--------------------
这么说吧,其实后面的参数是用来替代前面的%d的。所以%d所做的格式控制也仅对参数有效。