警告:逗号的右侧操作数对gcc 4.4.7没有影响

par*_*ohn 0 c c++ gcc

在Linux gcc 4.4.7中,我需要您的帮助以获得以下警告

for (int iLoop1= 0; iLoop1< iLoopN; ++iLoop1, ++iLoop2, !iIsOk)
Run Code Online (Sandbox Code Playgroud)

我在最后一个逗号之后的最后一个参数中发出以下警告

error: right-hand operand of comma has no effect
Run Code Online (Sandbox Code Playgroud)

我已经阅读了逗号运算符的wiki页面,但我不明白这个问题 https://en.wikipedia.org/wiki/Comma_o​​perator

编辑:有效!iIsOk没有做任何我测试以下代码

// 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

IsOk=0
IsOk=0
IsOk2=0
IsOk2=1
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 5

!iIsOk虽然评估过,但没有做任何事情; 即删除它将对程序完全没有影响.

您有用的编译器会警告您这一点.

你是不是要写作循环中停止条件的!iIsOk一部分:

iLoop1< iLoopN && iIsOk

或者使用它来切换

iLoop1++, iIsOk = !iIsOk

或更闪亮(由于变量重复较少,我个人觉得更清楚)

iLoop1++, iIsOk ^= true