【发布时间】:2013-03-16 02:16:24
【问题描述】:
为什么下面会打印出“World Hello!”?
据我了解,根据运算符的优先级,这应该从左到右进行评估。但相反,它似乎是从右到左。这是为什么呢?
#include <iostream>
using namespace std;
char print() {
cout << "World";
return '!';
}
int main() {
cout << "Hello " << print() << endl;
return 0;
}
【问题讨论】:
-
抱歉,链接错误。应该是Order of evaluation of operands
-
抱歉,我还是新手。我不知道该主题与我的问题相关。
-
你的理解是错误的。顺序是不确定的,即它可以是从左到右、从右到左,或者从中间向外曲折。
-
@Seb - 无需道歉,这很难。运算符优先级告诉我们应用运算符的顺序,但不告诉我们评估参数的顺序。允许编译器提前评估这些,并且没有特定的顺序。
-
@n.m.你的意思是未指定。在与标准不同的意义上使用“未定义”一词只会导致混淆和吹毛求疵。