gpt4 book ai didi

C 按位优先级和结合性

转载 作者:行者123 更新时间:2023-12-02 07:59:36 26 4
gpt4 key购买 nike

#include <stdio.h>

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

当我运行这段代码时,结果是 11

根据 C 语言运算符优先级,操作 && 应该在操作 || 之前发生。那么结果不应该是 2 1 吗? (a = 2, b = 1)

最佳答案

在 C 中对表达式进行 OR'ing 时,采用了一种快捷方式,即 I.E.一旦一个表达式被评估为 TRUE,其余的 OR 表达式就不会被评估

第一个表达式 a 的计算结果为 TRUE,因此所有其余表达式都不会计算,因此 a 永远不会递增

关于C 按位优先级和结合性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59228553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com