当我引用 C++ MCQ 时,我通过了这个代码片段。以前我只使用 && 或 ||用于组合多个条件,但此代码使用 ',' :
using namespace std;
int main()
{
int i;
for (i = 0; i < 0, 5; i++)
printf("%d ", i);
return 0;
}
对此的正式回答是无限循环。 请有人建议使用此代码段如何评估条件
最佳答案
您的 for 循环条件中有一个逗号运算符。 comma operator计算其第一个操作数并丢弃结果,然后计算第二个操作数并返回此值(和类型)。逗号运算符也是所有 C/C++ 运算符中最低的优先级,这意味着它始终是绑定(bind)到表达式的最后一个。
所以你的 for 循环中的条件相当于:
(i < 0), 5
此表达式的结果始终为 5,而不是 0(假)。因此,条件始终为真。
如果你最终让循环运行足够长的时间
i
,这是一个有符号整数,将溢出。这会导致未定义的行为(感谢 @Jarod42)。
关于c++ - for循环中的多个条件用于Cpp中的单个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61401132/