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

一:
#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值