c++ - 关于C++运算符优先级的问题

标签 c++

输出是 34 但这个表达式是如何求值的?

你能用括号显示吗?

正确的运算符优先级是:

a += ((((((2 * i++) % 5) * 4) + (--j)) - (3 / k)) + 2);

但我认为正确的应该是:

a += (((((2 * i++) % (5 * 4)) + (--j)) - (3 / k)) + 2);

#include <iostream>
using namespace std;

int main()
{
    int a = 3, i = 12, j = 14, k = 16;
    a += 2 * i++ % 5 * 4 + --j - 3 / k + 2;
    cout << a;
}

最佳答案

运算符*/% 具有相同的优先级并且从左到右分组。因此它是 ((2 * i++) % 5) * 4 而不是 (2 * i++) % (5 * 4)

关于c++ - 关于C++运算符优先级的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784395/

相关文章:

c++ - 从 Visual Studio 2012 以 Windows XP 为目标

c++ - 涉及函数绑定(bind)的代码含义

c++ - 参数列表中的元组

c++ - 是否存在检测有符号类型的位移位操作的 GCC 警告?

C++ 如何将成员函数指针传递给另一个类?

c++ - 在 OpenGL 中投影纹理

c++ - 从二进制文件按位对齐的读写

c++ - 如何从 while 循环中添加数字?

我在面试中从未见过的带有初始化的 c++ 新数组

C++:使用指针是 "Good Idea"(TM) 的场景是什么?