Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有两个条件的C循环-差异_C_Loops_Difference - Fatal编程技术网

具有两个条件的C循环-差异

具有两个条件的C循环-差异,c,loops,difference,C,Loops,Difference,这两者之间有什么区别 int i; for( i=0;i<5 && i<3;i++) { printf("stackoverflow.com"); } inti; 对于第二个代码块中的(i=0;i),实际上只有i

这两者之间有什么区别

int i;
for( i=0;i<5 && i<3;i++)
{
    printf("stackoverflow.com");
}
inti;

对于第二个代码块中的(i=0;i),实际上只有
i<3
用于计算循环是否应该退出。将计算
i<5
表达式,但其值将被丢弃。有关更多信息,请参阅


示例之间在功能上没有区别,因为
i<3
是限制表达式,并且出现在第二个。当我达到3时,两个循环都将退出。但是,如果您切换了术语,使其具有
i<3,i<5
,那么第二个循环在达到5时将退出,因为只有
i<5
的值是cons已识别。

在以下语句中使用逗号运算符

( <expression1>, <expression2> )
(,)
求值并丢弃,然后对
求值并返回其值。总之,对最右边的表达式求值并返回其值。对其他表达式求值并丢弃。因此:

for(i=0; i<5 , i<3; i++)

for(i=0;i在这种情况下,它们将执行完全相同的操作


不同的是,在第一种情况下,
i已经得到了回答。建议的副本只解释了两个代码片段中的一个…不是真正的副本,因为这是正确的;不确定为什么有人否决了它现在似乎有两个人否决了,只是为了准确起见,其他的表达式都被计算了(按从左到右的顺序)在最右边的表达式之前。如果有副作用,顺序很重要。@Barmar请澄清。对于逗号运算符,即使没有副作用,顺序也很重要。@klutt如果没有副作用,执行顺序有什么区别?只要它返回右边表达式的值,您就无法分辨哪个ord呃,它执行了它们。@Barmar区别在于哪个表达式起作用。在
&&
的情况下,顺序只在有副作用时才起作用,但使用逗号运算符,无论结果如何,你都会得到不同的结果。@klutt如果你有
a+3,b+4
,它有什么区别?它做加法的顺序是什么,只要r结果是
b+4
for(i=0; i<5 , i<3; i++)
for(i=0; i<3; i++)
(i<5 && i<3)
(i<3)