for循环中的多个条件用于Cpp中的单个循环

Multiple conditions in for loop for single loop in Cpp

我在引用 C++ MCQ 时浏览了这段代码片段。以前我只使用 && 或 ||用于组合多个条件,但此代码使用 ',' :

using namespace std; 
int main() 
{ 
   int i; 
   for (i = 0; i < 0, 5; i++) 
       printf("%d ", i); 
   return 0; 
} 

这个问题的正式答案是无限循环。请有人建议使用这个片段如何评估条件

您的 for 循环条件中有一个逗号运算符。 comma operator 计算它的第一个操作数并丢弃结果,然后计算第二个操作数和 returns 这个值(和类型)。逗号运算符在所有 C/C++ 运算符中也具有最低的优先级,这意味着它总是最后一个绑定到表达式。

因此 for 循环中的条件等同于:

(i < 0), 5

此表达式的结果始终为 5,而不是 0(假)。因此条件始终为真。

如果你离开循环 运行 足够长的时间,最终 i,它是一个带符号的整数,将会溢出。这会导致未定义的行为(感谢@Jarod42)。

在函数中'int main()': 10:16:警告:逗号运算符的左操作数无效 [-Wunused-value]

运行 您的代码 here 并阅读警告