int a,b c; a=20;b=30;c=10; if(a<b)a=b; if(a>=b)b=c;c=a;C语言求助!

int main(void)
{ int a,b c;
a=20;b=30;c=10;
if(a<b)a=b;
if(a>=b)b=c;c=a;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
为什么答案分别是30 10 30 呢?希望能帮我解答,谢谢了

int main(void)
{ int a,b c;
a=20;b=30;c=10;
if(a<b)a=b;//这里是将30赋值给a,进行了交换,a的值变成了30
if(a>=b)b=c;c=a;//这两条语句同样也是进行交换,将c的值10赋给了b,将a的值30赋给了c,注意是顺序执行的
printf("a=%d,b=%d,c=%d",a,b,c);//最后分别输出交换后的值30,10,30
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-11
判断a<b(20<30)为真,所以执行把b赋值给a,a=b=30,所以此时b=30

再判断a>=b(30>=30)也为真,所以执行把c赋值给b,b=c=10,再执行把a的值赋值给c,c=a=30,此时 a=30,b=10,c=30
注意两个if是独立的,不是if else结构
变量的值在每一次赋值后都可能会发生变化,其值就不一定等于初值了
第2个回答  2015-02-11
if(a<b)a=b;//判断a<b么,小于条件成立进入if语句 a=30;
f(a>=b)b=c;c=a;这行注意,if后面如果不跟大括号,只有算分号前的一句,后面的无论if条件成不成立逗要执行。a=b成立 b=c=10,后面的c=a不管前面if条件成不成立都要执行c=a=30追问

if后面大括号是什么意思?能不能举个例子

第3个回答  推荐于2017-05-21
首先a<b a=30;
此时a=30 >= b;
b=c=10; c=a=30;追问

那如果只有一个if该怎么计算啊?

追答

顺序计算。
if语句 到它的分号处,就结束了;
如果没有else,之后的就是循序进行。你可以加括号来区分层次。

追问

还有个问题
如果第二个if语句的条件不成立的话,那么他后面的B=C是不是就不能正常计算了,B就应该是他原来的值呗,然后后面的C=A还是正常的被?
亲,你说的分号处是不是指的B=C后面的那个分号啊?
真的是太谢谢了

追答

嗯,对的,你可以自己赋值进行验证。
if(a>=b)b=c;c=a; 你把a>=b写成a>= 40
此时应该输出 30 30 30,
b=c;不运行
c=a; 运行

追问

谢谢

本回答被提问者采纳
第4个回答  2015-02-11
执行if(a<b)a=b;后a=30,b=30,c=10

执行 if(a>=b)b=c后a=30,b=10,c=10
;执行c=a;后,a=30,b=10,c=30
所以,a=30,b=10,c=30