c++ - C表达式的评估

标签 c++ c expression

int main() {
  int i = -3, j = 2,  k = 0, m;
  m = ++i || ++j && ++k;
  printf("%d %d %d %d\n", i, j, k, m);
  return 0;
}

我认为 && 的优先级高于 ||按照这个逻辑 ++j 应该执行,但它从来没有执行,程序输出 -2 2 0 1。这里发生了什么?中间步骤是什么?

最佳答案

&&确实比||有更高的优先级,这意味着++i ||++j &&++k 解析为 ++i || (++j &&++k).

然而,这并没有改变 || 的 RHS 仅在 LHS 返回 0 时才执行的事实。

优先级不影响求值顺序。

关于c++ - C表达式的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916177/

相关文章:

C++11 std::thread std::move 提示尝试使用已删除的函数

C++,directx 12 : Color Picking Questions

c++ - Boost::bind 一个带有 boost::function 参数的方法

c++ - 如何在 C/C++ 源代码中公开 typedef?

c - 在 C 编程中定义和初始化此数据类型

php - 将字符串转换为可执行表达式 PHP?

mysql - 在 MySQL 中使用 REGEXP 选择列

c++ - 声明 QStringList 时出错

function - 表达式不能用作函数-IF STATEMENT

c - 为结构体指针赋值的语法