首页 > 解决方案 > << 运算符优先级与字符串比较

问题描述

#include <iostream>

using namespace std;

int main() {
        string line1("Mike");
        cout << line1 < "mike" << endl;
        return 0;
}

仅当我在比较周围使用括号时,上面的代码才能正确运行。我认为这是因为这些操作的优先级。有人可以向我解释一下吗?谢谢

标签: c++string

解决方案


这就是我要问的。如果 的<优先级高于<<,为什么上面的代码是错误的?

根据C++ 的运算符优先级规则,按位左移运算符 <<的优先级高于关系运算符 <[强调我的]:

C++ 运算符优先级

[...] 运算符从上到下按降序排列

优先级运算符

[...]

7:(<<按位左移运算符)

[...]

9:(<关系运算符)

注意上面对降序的强调,这个表中9不代表7高,这可能是你对这两个运算符进行优先级排序时的误解。


推荐阅读