为什么此代码会产生一个引用逗号运算符的警告?

| 当回答这个问题时,我遇到了这段代码...
#include <iostream>

int main()
{
    int const income = 0;
    std::cout << \"I\'m sorry your income is: \" < income;    // this is line 6
}
...包含错字。第6行上的第二个(预期)
<<
运算符被意外地写为
<
。 除此之外,使用GCC 4.3.4或4.4.3编译代码会产生警告:
prog.cpp: In function ‘int main()’:
prog.cpp:6: warning: right-hand operand of comma has no effect
我的问题:为什么会产生该特定警告?它指的是哪个逗号运算符? 注意:我不是故意在
cout
语句中使用单个
<
。我只是偶然发现了这个警告,试图找出我链接到的另一个问题的答案,并对为什么编译器生成它感到好奇。     
已邀请:
我认为他们只是忘记更改警告文字
int main() {
   1, 2;
}

prog.cpp:2: warning: left-hand operand of comma has no effect
prog.cpp:2: warning: right-hand operand of comma has no effect
expr, expr
运算符先评估左操作数,然后评估右操作数,然后得出右操作数的求值结果。如果正确的操作数无效且未使用其值,则可能是程序中的错误。 现在看来,他们只是滥用了以上警告文本来警告其他二进制运算符。     
您的给定程序在MSVC2010中不会对我产生警告,它只会产生   警告C4552:\'<\':运算符无效;具有副作用的预期算子 那应该是
income;
之前的
<<
。 (注意:Ideone根本不会发出警告。)     

要回复问题请先登录注册