在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/

10-11 21:50