<<具有字符串比较的运算符优先级

时间:2020-06-12 10:24:30

标签: c++ string

#include <iostream>

using namespace std;

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

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

1 个答案:

答案 0 :(得分:1)

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

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

C ++运算符优先级

[...]运算符从上到下列出,以降序排列

优先级操作员

[...]

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

[...]

9 <(关系运算符)

请注意,上面强调了降序,这意味着 9 并不意味着 的优先级比 7 高表格,这可能是您在对这两个运算符进行优先排序时做出的误解。