简单C语言

当a=1,b=2,c=3时,以下if语句执行后,a、b、c中的值分别为多少?
if(a>c)
b=a;a=c;c=b;
要 讲清楚过程

a=3,b=2,c=2.
解析:a,b,c先分别赋值1,2,3。执行if语句:当a>c时,才将a的值赋给b。
实际上,a=1,c=3,所以不执行b=a。b的值还是2。由于b=a后面是分号,表示if语句已经执行完毕,后面的a=c和c=b就是赋值,将c的值赋给a(即把3赋给c),再将b的值赋给c(即把2赋给b)。所以得到结论:a=3,b=2,c=2.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-09
a=3;b=2;c=2;
因为if后面没有加{},所以它的范围只到它下面的第一个分号就结束了,,所以当a=1;c=3时a>c就不成立,所以跳过了b=a。。。然后再执行a=c,所以a的值是3。。。再执行c=b,所以c的值是2。。。b没有被赋值,所以b的值是2。。。
第2个回答  2009-01-09
if(a>c) 后面的语句要有2条或2条以上,就需要用大括号括起来。
现在看来是没括,那就是说后面只有一条语句b=a;为分支结构所用
剩下的两条顺序执行就可以。
所以:a=1,b=2,c=3;时a>c 不成立。跳过b=a;
顺序执行a=c;c=b;
结果:a=3,b=2,c=2;
第3个回答  2009-01-09
if(a>c)
b=a;a=c;c=b;
相当于
if(a>c)
b=a;
a=c;c=b;
因为b=a;a=c;c=b;未被{}包括,所以if条件句只起作用至b=a;后(第一个分号后)。
------------------------------------
因此:
a=3
b=2
c=2
第4个回答  2009-01-09
你上面的语句,其实IF语句的主体只有一句,就是 b=a;
如果是上面的意思,那结果将是:a=3 b=2 c=2

如果你的意思是这样的:

if(a>c)
{b=a;a=c;c=b;}

那么a b c的值一点都没有变,因为a>c不成立。本回答被提问者采纳
相似回答