为什么给定代码的输出会像这样??
int main(){
int a,b,c;
scanf("%3d %3d %3 d",&a,&b,&c);
printf("%d %d %d",a,b,c);
}
我提供的输入是1234 5678。
突然显示输出为123 4 567。
任何人都可以解释为什么这个输出来了吗?
答案 0 :(得分:3)
首先:如果您完全按照显示的方式编译了代码,请注意最后一个%3
和d
之间有一个空格,因此scanf
将不会读取最后一个值,因为没有第三个%3d
标志。
第二:您在scanf
和3
之间使用%
d
,这意味着您将读取的整数宽度限制为3位数,以便输入的数字, 5678
应该只读567。
我的建议:将scanf
行写为
scanf("%d %d %d", &a, &b, &c);
这样你可以给它带有或多或少数字的整数。
答案 1 :(得分:2)
scanf("%3d %3d %3 d",&a,&b,&c);
输入:1234 5678
输出:123 456 -1217434035
因为你的表达式%3 d
搞砸了。
如果您将整个内容更改为:
#include <stdio.h>
int main(){
int a,b,c;
scanf("%3d %3d %3d",&a,&b,&c);
printf("%d %d %d",a,b,c);
}
你得到(可能是预期的)输出:
123 4 567
会发生什么:
123
被读入a
(您指定了3个字符)
4
被读入b
(默认情况下scanf在空格处停止)
567
被读入c
(您指定了3个字符)