一个有关c语言的问题!请问我输入的格式不同为什么会出现这些不同的运行结果!

代码是:main(){inta,b,c,d,e;printf("pleaseinputabc\n");scanf("%d,%d,%d",&a,&b,&c);d=a>b?a... 代码是:main()
{int a,b,c,d,e;
printf("please input a b c\n");
scanf("%d,%d,%d",&a,&b,&c);
d=a>b?a:b;
e=b>c?b:c;
printf("%d,%d\n",d,e);
}
我第一次输入的是:6 5 4
就是中间隔了个空格
结果是:6,-858993460
我又输入:6,5,4
结果是:6 ,5
我输入:654
结果是:654,858993460
有谁能帮我详细解释一下这是什么原因,什么导致的!
然后我又把d=a>b?a:b;这段代码改成了d=a>b?b:a;
这时候我后两种输入就都变成了858993460,858993460了,这数字又代表什么,我刚学,刚编,不懂,求教高手啊!谢谢了!我传了一张图片可以看看!
展开
 我来答
百度网友de233a3
2012-03-07 · 超过11用户采纳过TA的回答
知道答主
回答量:20
采纳率:0%
帮助的人:32万
展开全部
这些数字都是乱码,原因是你定义a,b,c,d,e的时候没有初始化。没有初始化,系统就随便给他们分配值,就有可能是858993460这些值。当你只输入一个参数时,只有a赋值了,b c值是乱的,最后计算出结果也是乱的,输入三个参数时,a b c都赋值正确了,所以结果也就正确。
变量在使用前一定要先初始化,这是良好的编程习惯。
追问
怎么算是初始化呢,而且无论输什么数字都是得到-858993460这个值的!如果都是乱码的话,第一个答案数字它是怎么能得到的呢?
追答
初始化就是在使用前给变量赋值,比如定义的时候就初始化变量,int a,b,c,d,e改为int a=0;b=0,c=0,d=0,e=0;不过这样也是不好的,最好的是一行只写一个变量定义,虽然啰嗦,但是其他人好读,这个也是编程规范。
看你的追问是对scanf函数还不了解,scanf是以空格或者回车为分界的,你输入“6 5 4”,scanf认为你输入了三个值,分别给a b c赋值了,你输入“654”,scanf认为你只输入了一个值,就把654这个值赋给a,b和c还是乱值,详细可以看 http://baike.baidu.com/view/1390039.htm
所谓的乱值是只不可控值,你在同一台机器上运行的时候电脑分配的内存可能是在同一块,得到的值也许是一样的,这块我也说不清,你可以把程序拷到另台机器上运行,这个值应该就会改变。
jing123ke
2012-03-07
知道答主
回答量:10
采纳率:0%
帮助的人:3.9万
展开全部
用scanf输入时,你输入的数值应与scanf("%d,%d,%d",&a,&b,&c);
中完全相同,只能输入4,5,6
如果想用空格,那么scanf中应这样写scanf("%d空格 %d空格%d",&a,&b,&c);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-07
展开全部
并不是初始化的问题,此问题说明楼主对scanf ()和printf()函数不是很理解,建议看看c primer plus 第五版的第四章的第四节 研究和利用scanf()与printf()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式