您的位置:首页 > 编程语言 > C语言/C++

当a=1,b=2,c=3时,if(a>c)b=a;a=c;c=b;的执行结果详解

2016-05-20 16:44 483 查看
一:
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C c语言 ifacbaaccb