逻辑运算符及其在C/C 中的优先级
Logical Operators and their precedence in C/C++
我最近遇到了一块代码
//以零
克服划分的程序int a=0;
int b=100;
int c= a==0 || b/a ;
printf("Hello");
//输出:你好
我的理论:根据优先级,操作员/具有高于||的优先级。因此,b/a必须先执行,我们应该获得运行时间错误。
我认为正在发生的事情是:
短路操作员||,评估LHS a == 0,这是正确的,因此不会执行B/A。
我的理论是错误的吗?我很确定这是非常简单的事情,我现在无法弄清楚
优先级并不意味着评估顺序,仅分组(括号)。
在||
的第一操作数的ev仪之后,有一个序列(旧的说法),因此,无论这些操作数是什么,必须在第二个||
的第一操作数进行评估。由于在这种情况下,表达式a == 0 || b/a
的总体结果是由第一操作数确定的,因此几个都没有评估。
/
比 ||
的较高优先级表示表达式评估为:
int c= (a==0) || (b/a) ;
而不是
int c= (a==0 || b)/a ;
但仍然,由于逻辑评估是短路的,因此只有b/a
才能评估a!=0
。
相关文章:
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 逻辑运算符上出现错误代码 a')'
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- 我需要这方面的帮助C++在使用逻辑运算符时是/否问题
- C++复合逻辑运算符不使用比较运算符
- (C++)为什么"||"逻辑运算符返回 1?
- 逻辑运算符的问题。主要对 && 和 || 感到困惑
- 用户输入逻辑运算符符号或数字,如果输入字符或字符串则无效
- std::查找多个元素和逻辑运算符
- 逻辑运算符及其在C/C 中的优先级
- 括号和逻辑运算符
- 如何在 C++ 中使用更多逻辑运算符
- 引用、逻辑运算符和循环条件
- 在 switch 语句中使用算术和逻辑运算符
- 读取真值表C++的逻辑运算符表达式
- C++逻辑运算符 Q
- C++ 中的运算符优先级和运算符关联性规则
- 关于 while(n) 在 c++ 中没有逻辑运算符
- 不带逻辑运算符的舍入整数除法
- 优先级和逻辑运算符