一道选择题:
若有定义:int a=1234, b=-5678;
用语句 printf("% -6d% -6d",a,b); 输出,
以下正确的输出结果是( )
- 1234 -5678 (中间有两个空格,最后有一个空格)
- 1234 -5678 (中间有两个空格,最后有一个空格)
- 1234 -5678(最前面有一个空格,中间有一个空格)
- -1234 -5678(最前面和后面均无空格)
猛一看是不是有点懵,好像知道点啥,又不确定是哪个答案。
常用的 %d,%c,%f,%s 大家应该都熟悉了。
复杂点的m是一共6位,不足的用空格补足。但是题目这么长的还没见过。其实这个题目并不复杂。
%-6d 加负号是左对齐。
% 6d 可不是右对齐哟。m默认就是右对齐,即不足6位的话前面补空格。
中间 表示输出的时候带正负号。
所以% -6d意思就是宽度一共是6位,带正负号,左对齐,不足的右边补空格。
总结一下:
格式说明 | 表示内容 | 格式说明 | 表示内容 |
---|---|---|---|
%d | 整型 int | %c | 字符 char |
%ld | 长整型 long int | %s | 字符串 |
%f | 浮点型 float | %o | 八进制 |
%lf | double | %#o | 带前导的八进制 |
%% | 输出一个百分号 | %x | 十六进制 |
] | %#x | 带前导的十六进制 |
举例说明:
printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123
printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格 123
printf(“f”,1.25 );小数要求补足6位的,没有六位的补0,。结果为 1.250000
printf(“%5.3f”,125 );小数三位,整个五位,结果为1.250(小数点算一位)
printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入)
若有int x=017;则下面语句对应输出如下:
输出语句 | 输出结果 |
---|---|
printf(“%d”, x); | 15 |
printf(“%o”, x); | 17 |
printf(“%#o”,x); | 017 |
printf(“%x”, x); | 11 |
printf(“%#x”,x); | 0x11 |
最后再留一个题目:
若有定义:int a=99, b=88;
用语句 printf("%%d%d",a,b); 输出,
以下正确的输出结果是( )
- �88
- �9
- �8
- 以上均不正确
答案请仔细阅读上面总结。