在C中使用for循环时,左侧操作数没有效果警告

在C中使用for循环时,左侧操作数没有效果警告,c,C,我创建了一个for循环,并遵循了类似于“s”和“;”s的准则 for (i = 0, j = 0; i < 10, j < 10; i++, j++) { //do something; } for(i=0,j=0;i

我创建了一个for循环,并遵循了类似于“s”和“;”s的准则

for (i = 0, j = 0; i < 10, j < 10; i++, j++) {
    //do something;
}
for(i=0,j=0;i<10,j<10;i++,j++){
//做点什么;
}

然而,我在编译时仍然收到一条警告,说“逗号表达式的左手操作数无效”。

正如注释所指出的那样,问题得到了解决:“
&&
”而不是“
”,
”必须在“
I<10
”和“
j<10
”之间使用

for(i=0,j=0;i<10&&j<10;i++,j++){
//做点什么;
}

i<10,j<10

for (i = 0, j = 0; i < 10 && j < 10; i++, j++) {
    //do something;
}
是允许的,但可能不是预期的,因为它丢弃第一个表达式的结果,只返回j<10的结果。对逗号左侧的表达式求值,丢弃它,然后对右侧的表达式求值并返回它
(已收集)

如果要测试多个条件,请改用逻辑AND运算符&&进行测试。顺便说一句,逗号分隔的条件在我的IDE中运行良好

以前也讨论过类似的概念。看看。


这里有一个实际的例子。如果您运行下面给出的代码,您将看到它的输出是2倍的10倍

#include <stdio.h>
void main() 
    {
       int i,j;
       for (i = 0, j = 0; i < 2, j < 10; i++, j++) {
           printf("Hello, World!");
    }
}
--output----
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
#包括
void main()
{
int i,j;
对于(i=0,j=0;i<2,j<10;i++,j++){
printf(“你好,世界!”);
}
}
--输出----
你好,世界!
你好,世界!
你好,世界!
你好,世界!
你好,世界!
你好,世界!
你好,世界!
你好,世界!
你好,世界!
你好,世界!
如果希望这两个条件都有效,请使用AND(&&&)运算符,而不是逗号分隔的条件

#include <stdio.h>
void main()
    {
        int i,j;
       for (i = 0, j = 0; i < 2 && j < 10; i++, j++) {
           printf("Hello, World!\n");
    }
}
---output--
Hello, World!
Hello, World!
#包括
void main()
{
int i,j;
对于(i=0,j=0;i<2&&j<10;i++,j++){
printf(“你好,世界!\n”);
}
}
---输出--
你好,世界!
你好,世界!
没有必要使用和分离多个条件,只有一个条件就足够了。迭代步骤较少的条件将只执行,循环将中断

#include <stdio.h>
void main()
    {
        int i,j;
       for (i = 0, j = 0; i < 2; i++, j++) {
           printf("Hello, World!\n");
    }
}
---output--
Hello, World!
Hello, World!
#包括
void main()
{
int i,j;
对于(i=0,j=0;i<2;i++,j++){
printf(“你好,世界!\n”);
}
}
---输出--
你好,世界!
你好,世界!

中使用值(i=0,j=0;i<10,j<10;i++,j++)
是无用的,因为
i
j
将同时达到相同的值。除非其中一个值可能在for循环声明之外的时间发生更改,否则这可以简化为
(i=0;i<10;i++)

另外,正如其他人所指出的,分隔比较的逗号(尽管有效)应替换为
&&
。最后,循环应该是

for ( i = 0, j = 0; i < 10 && j < 10; i++, j++ )
for(i=0,j=0;i<10&&j<10;i++,j++)

(i=0;i<10;i++)的


虽然您应该更喜欢后者,因为前者会使用不必要的代码。

i<10
i<10中,j<10
没有效果。您使用的是哪种ide?使用搜索查询时会出现警告。作为重复关闭。值得注意的是,像这样的“双迭代器”实际上毫无意义,除非
i
j
以某种有意义的方式分开。在任何情况下,请尝试在循环范围内声明您的循环变量,如
for(inti=0,j=0;…)
for ( i = 0; i < 10; i++ )