c语言关于多个变量之间的运算符的关系问题(一)

        在初学c语言的时候,很多新手弄不懂一些多个变量与运算符的逻辑关系,我牛马哥在这里讲解一下(其实我也很菜,哈哈)。这里我们举例一个例子,如“a>b>c"。下图是一个具体例子。

int main()
{ 
    int a=5,b=4,c=3,d=2;

    if(a>b>c)

    printf("%d\n",d);

    else if((c-1>=d)==1) printf("%d\n",d+1);

    else printf("%d\n",d+2);
}

        这段代码在控制台的输出结果是多少呢?如果按正常的逻辑思路乍一看,a = 5b = 4c = 3a最大,b次大,c最小,感觉完美符合 if 中的表达式。如果这么想你就中圈套了,在编译器中并没有像数学中的递推关系,而是先去判断a>b这个小表达式。在判断逻辑中只有10,真为1,假为0,所以a>b的判断结果再和c做比较。在所示的题目中,a>b(即5>4)为真,所以返回的是1。然后1再和c作比较(即1>c),那1肯定小于3,所以a>b>c为假。同理a>b<ca<b>ca<b<c、甚至是更多的变量也是如此。

        接下来我要讲的是a=b>ca==b>c 之间的区别                                                                                (= 被称为赋值运算符,<>==被称为关系运算符)

        a==b>c,有些人一看说这不是和上面一样吗,先判断a==b,返回10c作比较。如果这么想的话那就错了,这里有一个细节点,就是虽然<>==都是关系运算符,但是<>==的优先级要高,所以要先判断b>c(即a==(b>c)

        a = b>c也是如此,<>=的优先级高,所以也要先判断b>c(即a=(b>c)

 


        当然这几个例子也是是众多运算逻辑与运算符使用的一点点,我牛马哥到后续也会随着学习补充更多的内容,谢谢大家。如有错误,请及时指正。


 英语专栏:

赋值运算符(Assignment Operator

关系运算符(Relational Operator

优先级(precedence

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值