首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中“或”和“和”算子的优先级

问C中“或”和“和”算子的优先级
EN

Stack Overflow用户
提问于 2019-05-27 11:08:05
回答 1查看 471关注 0票数 0

在下面的代码中,我得到的结果是10 -1-1--1。但是根据优先级规则,不应该‘和’运算符必须先求值吗?(并产生c=9)例如:d=a_‘t\(-b)&&(-c),因为’‘和’具有更高的优先级。(或者快捷方式破坏了优先规则?)预先感谢。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main(){
    int a,b,c,d;
    a =1;
    b = c = 10;
    d = a|| --b&&--c;
    printf("%d\n",c);
    printf("%d\n",a);
    printf("%d\n",d);
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2019-05-27 11:16:31

评价的先后顺序是两件不同的事情。来自Logical OR 文档(重点是我):

lhs评价后存在一个序列点。如果lhs的结果比较等于零,那么rhs根本就不会被评估(所谓的短路评估)。

在exp1 || exp2的情况下,总是首先计算exp1,因为在它之后有一个序列点,如果exp1是非零的,那么exp2是不计算的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56324900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档