C位优先级和关联性

问题描述 投票:0回答:1
#include<stdio.h>

int main() {

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

当我运行此代码时,结果为1和1根据C语言运算符优先级,运算符&&假设在运算符||之前发生。所以结果不应该是2 1吗? (a = 2,b = 1)

c operator-precedence
1个回答
0
投票

当在C语言中对表达式进行或运算时,即会采用快捷方式,即一旦表达式的计算结果为TRUE,其余OR'd表达式将不被计算]

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

© www.soinside.com 2019 - 2024. All rights reserved.