c语言中,输出函数中的%-4d是什么意思

 我来答
风若远去何人留
2015-06-04 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

%-4d是用于C语言输出的格式字符串,可以用于printf类函数,包括printf, sprintf, fprintf,vfprintf,vprintf,vsprintf,snprintf,vsnprintf,vasprintf等等。

各种函数中的含义是相同的,都是按照10进制形式输出整数值,输出值范围如果不足4列宽度,那么按4列宽度输出,否则按实际宽度输出。 输出结果数值在左侧,右侧用空格补足。

%-4d的四个字符每个都有各自的功能,具体如下:

1 %:格式字符串的引导标识,每个格式字符串必须以%开头。

2 -: 输出的内容左侧为有效数据,右侧为补足字符。

3 4:输出占4列宽度,不足用空格补齐,超出按实际长度输出。

4 d: 按照10进制整型输出。


下面这个例子输出两行数据,每行五个数值:

#include <stdio.h>
int main()
{
printf("%-4d%-4d%-4d%-4d%-4d\n",1,12,123,123412,12345);
printf("%-4d%-4d%-4d%-4d%-4d\n",23,123,2341,1,123456);

return 0;
}

输出结果为

1   12  123 12341212345
23  123 23411   123456

从中可以看到其作用及缺陷。

对于低于4位的整数,可以很好的实现输出及对齐效果,比如例子中的第一列和第二列。

如果输出位数为4位,那么输出值和下一个输出间不会有分隔符,比如第二行的3 4两列,本来是2341和1,但输出的效果是一个数23411。

当数值超过4位时对齐效果会被打乱,同时与下一个输出见没有间隔。

比如第一行的第四列,输出数值为123412,与下一个12345没有分隔,同时第五列的12345本应与第二行的123456左对齐,但由于123412侵占了该位置,导致二者无法达成对齐效果。


所以%-4d这类格式输出,仅使用与数据规模在四位数以下的情况,超出则会出错。

如果在数据中存在负值,则负值仅可以为三位数或以下,因为输出的符号也同样会占一列宽度。

匿名用户
2014-12-07
展开全部
%d是输出整数,中间的-4是指输出占用4个字符宽度,如果实际输出不足4位则右补空格,否则按实际宽度输出,如果去掉负号写成%4d,就是左补空格,其余含意一致。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友93f3c88
2014-12-07
知道答主
回答量:4
采纳率:0%
帮助的人:2.5万
展开全部
4代表输出4个字符 -代表左对齐的意思

#include<stdio.h>
void main()
{int m,n;
for(m=1;m<=9;m++)
{for(n=1;n<=9;n++)
printf("%1d*%1d=%-4d",m,n,m*n);

printf("\n");
}
}
用这个程序理解一下^ ^
追问
那右对齐呢〜
追答
以字符为对象,默认是右对齐
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bignode
2014-12-07 · TA获得超过2664个赞
知道大有可为答主
回答量:1427
采纳率:75%
帮助的人:547万
展开全部
按 整型 输出, 占4个字符宽, 数字左对齐
如 输出 1,22,344,5555,效果如下
1   <其它输出>
22  <其它输出>
344 <其它输出> 
5555<其它输出>
更多追问追答
追问
那个负号是什么意思 左对齐吗
右对齐呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TFlwys
2014-12-07 · 超过27用户采纳过TA的回答
知道答主
回答量:733
采纳率:0%
帮助的人:129万
展开全部
与应用于
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式