#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语言中对表达式进行或运算时,即会采用快捷方式,即一旦表达式的计算结果为TRUE,其余OR'd表达式将不被计算]
第一个表达式a
的计算结果为TRUE,因此其余所有表达式均不计算,因此a
永远不会递增