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 并阅读警告
我在引用 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 并阅读警告