在LinuxGCC4.4.7中,我需要您的帮助来处理以下警告
for (int iLoop1= 0; iLoop1< iLoopN; ++iLoop1, ++iLoop2, !iIsOk)
最后一个逗号后面的最后一个参数发出了以下警告
error: right-hand operand of comma has no effect
我读过关于逗号运算符的wiki页面,但我不明白这个问题
https://en.wikipedia.org/wiki/Comma_operator
编辑:
有效!伊索克什么都不做
我已经测试了以下代码
// Example program
#include <iostream>
#include <string>
#include <iostream>
int main()
{
int iIsOk = 0;
for (int iLoop1 = 0; iLoop1 < 2; iLoop1++, !iIsOk)
{
std::cout << "IsOk=" << iIsOk << std::endl;
}
for (int iLoop1 = 0; iLoop1 < 2; iLoop1++, iIsOk = !iIsOk)
{
std::cout << "IsOk2=" << iIsOk << std::endl;
}
}
输出:
IsOk=0
IsOk=0
IsOk2=0
IsOk2=1
最佳答案
!iIsOk
尽管已评估,但不会执行任何操作;即删除它对程序绝对没有影响。
你有用的编译器正在警告你这一点。
您是否打算将!iIsOk
作为循环中停止条件的一部分写入:iLoop1< iLoopN && iIsOk
或使用iLoop1++, iIsOk = !iIsOk
或者更华丽的(我个人觉得更清晰,因为变量重复次数更少)iLoop1++, iIsOk ^= true
关于c++ - 警告:逗号右手操作数无效gcc 4.4.7,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44625139/