问下C语言选择结构的一个题目

来源:百度知道 编辑:UC知道 时间:2024/09/24 08:25:32
运行程序:
main()
{ int a=4,b=3,c=5,t;
if(a<b) t=a;a=b;b=t;
if(a<c) t=a;a=c;c=t;
printf("%d %d %d\n",a,b,c);
}

得出的结果中b=3129,为什么?
一楼的朋友提供的那个程序我也知道,在练习册上是和我提问的程序进行对比的,题目里面就是要求去掉{},进行运行结果的对比……那t里的垃圾数据是怎么回事?为什么是3129呢?

#include"stdio.h"
main()
{ int a=4,b=3,c=5,t;
if(a<b)
{ t=a;a=b;b=t;}
if(a<c)
{ t=a;a=c;c=t;}
printf("%d %d %d\n",a,b,c);
}

{}这个控制结构很重要!深记
你这个是垃圾数据。,因为t的值决定b值,而a<b不成立,使t得不到a值,所以t 里存的始终是个垃圾数据,,顺序执行程序使b得到t里的垃圾数据,,

补充:什么数据我也不太清楚,就是个不确定的数,我调试出一个负数。。。

程序的意思是如果a<b,交换a,b,如果a<c,交换a,c
所以a和c交换,这时a=5,b=3,c=4,输出5 3 4

那t里的垃圾数据是怎么回事?

这是由于if(a<b) 不成立,
而去掉{}后,
if(a<b)这个if语句的有效域只到t=a;为止,
所以其后的a=b;b=t;还是执行了,
而之前t没有初始化,也没有被赋其他值,所以就是一个没有初始化的变量,
t里面是一个随机值,这样就被赋给了b。