有关 字段宽度的小疑点
有关 字段宽度的小问题
#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所做的格式控制也仅对参数有效。
#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所做的格式控制也仅对参数有效。