如何解决为什么此代码会产生一个引用逗号运算符的警告?
| 当回答这个问题时,我遇到了这段代码...#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根本不会发出警告。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。