<<运算符优先级与字符串比较


#include <iostream>
using namespace std;
int main() {
string line1("Mike");
cout << line1 < "mike" << endl;
return 0;
}

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

这就是

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

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

C++运算符优先级

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

优先级运算符

[...]

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

[...]

9<(关系运算符(

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

最新更新