c语言 格式符 的问题!

1.以下程序运行结果是:
main()
{
long y=-43456;
printf("y=%-8ld\n",y);
printf("y=%-08ld\n",y);
printf("y=%08ld\n",y);
printf("y=%+8ld\n",y);
}
答案:
y=-43456
y=-43456
y=-0043456
y= -43456

2.main()
{
int y=2456;
printf("y=%3o\n",y);
printf("y=%8o\n",y);
printf("y=%#8o\n",y);
}
答案:
y=4630
y= 4630
y= 04630

问题!
1.第一题里面:
a。%08ld是右对齐,为什么左边补的是0而不是空格?
b。%08ld和%-08ld中的0到底有什么意义?
c。%+8ld的 加号 是不是加不加都一样?意义也一样么?

2.第二题里面:
%o以八进制格式输出,这点我知道。就想问,
a。%#8o的#是什么意思?
b。%#8o对应输出 y= 04630,为什么空了三个格之后,还要补一个0??

以上问题~麻烦详细解释一下!
谢谢!
再补充问一下!
对于 %#8o 和 %08ld 之类的格式还有什么??可以的话请详细一点介绍用法~~
谢谢!!

08ld表示补0
8ld表示补空格

+号表示一定要输出符号: 若是正数, 要在数字前加上正号.

#不清楚, http://tieba.baidu.com/f?ct=335675392&tn=baiduPostBrowser&sc=4613949633&z=459435602&pn=0&rn=30&lm=0&word=c#4613949633
里面也没有.

查到其他资料后再告诉你.

-------------------------------------------------------------

(续)
#的含义在printf的源码处的注释里找到了:
对于八进制, 表示前面添加一个0;
对于十六进制,表示前面添加 0x
所以,
%#x等价于 0x%x
%#o等价于 0%o
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答