一:
#include<stdio.h>
main()
{
int a,b,c;
a=1;b=2;c=3;
if(a>c)
b=a;
a=c;
c=b;
printf("%d%d%d\n",a,b,c);
return 0;
}
这个程序的运行结果为:322
解释:
首先需要知道一个前提:if语句在后续的语句不加 {} 的前提下,只负责执行它的下一条语句。
1.因为 if(a>c)的语句不能成立,所以接下来的第一条语句b=a;则不执行,继续执行下面的语句。
那么因为c=3,则a=c;语句的a值最后为3
因为关于b的语句没有执行,所以b的值不变,仍然为2,那么执行语句c=b;后的c的值也为2
所以最后的结果按abc来排序,则为322
二:相比较于上面的程序,这里只更改了一个关系运算符“<”,结果也是不同的。
#include<stdio.h>
main()
{
int a,b,c;
a=1;b=2;c=3;
if(a<c)
b=a;
a=c;
c=b;
printf("%d%d%d\n",a,b,c);
return 0;
}
解释:
1.因为 if(a<c)成立,则执行b=a;语句b的值就为1
继续执行a=c;语句,则最后a的值为3
继续执行c=b;语句,因为此时b的值经过上面的语句已经成为了1,这时候就相当于再把1赋值给c,所以最后的c值为1
最后总的执行结果按abc排序就是:311