一个基础的但是比较变态的C语言题目

来源:百度知道 编辑:UC知道 时间:2024/04/30 19:02:12
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(■代表空格)

不知道答案怎么得出,希望大家可以详细点儿说明下结果,尤其是上题中printf“+”和“0”的作用,谢谢!

"%-8ld"中的“-”的意思是“向左靠齐”;“8”代表“占八位”;“l”代表“长字节”,在此题中的目的是为了防止“数据的溢出”。
“-08ld”中的“0”代表“不足的补‘0’(若没有这个0的话,系统就会自动补‘空格’——一直到凑足8位)”;当然,如上面的有“向左靠齐”的命令,系统运行后,就会将“0”省去了。
“+8ld”中的“+”代表“要标明‘正、负号’”,比如:若定义“y=43456”,则程序的运行结果将是“y=+43456”。

C语言的学习,靠自己多多的去实验。

%md,是指输出的字段要占m位,如果数据位数小于m则左端补空格,如果大于m则按实际位数输出!加个-号就空格位置相反(在右端补空格)!
有0情况:
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
+可以省略