微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C 中的结合性

如何解决C 中的结合性

#include <stdio.h>
int main()
{
    int a=10,b=20,c=30,d=40;
    
    
    if(a<=b == d>c)
    {
        printf("true");
    }
    else
    {
        printf("false");
    }
}

对于上面的代码,因为 运算符具有相同的优先级,所以结合性会出现在图片中。 所以我可以说(从左到右) 在这种情况下将被评估

解决方法

运算符优先级/关联性指定哪些运算符与哪个操作数“粘合”在一起。在这种情况下,他们指定应该将表达式解析为 (a<=b) == (d>c) 而不是 a<= (b==d) >c 等。

由于关系运算符的优先级高于等式运算符,因此结合性在这里无关紧要。仅当您编写了类似 a <= b > c 的内容时才有意义。

此外,不要混淆运算符优先级和计算顺序。在这种情况下,a<=b 表达式或 d>c 表达式可能首先被评估,因为 == 运算符没有指定其操作数的评估顺序。这是未指明的行为,可能因情况而异。

详情见What is the difference between operator precedence and order of evaluation?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。