c++ - 一个for循环的测试条件可以放多个关系表达式吗?

标签 c++ for-loop expression conditional-statements

Uni Quiz Answers 告诉我: 多个关系表达式不能放在for循环的测试条件中。

我已编译并运行以下代码:

int main()
{
    for(int i=1;6<i<10;i++)
        cout << "hi\n";
    cin.get();
    return 0;
}

和:

int main()
{
    for(int i=1, j=1; i<10 && j<10; i++,j+=i)
        cout << "hi\n";
    cin.get();
    return 0;
}

和:

int main()
{
    for(int i=1, j=1; i<10, j<5; i++,j++)
        cout << "hi\n";
    cin.get();
    return 0;
}

它们都以预期的输出编译和运行。

在第一个示例中,“6 小于 i”的计算结果为 0,“0 小于 10”的计算结果为 1, 导致无限循环,但它绝对是合法的代码,没有 编译器错误。

干杯, 史蒂夫

最佳答案

线

for(int i=1, j=1; i<10, j<5; i++,j++)
  cout << "hi\n";

相同
for(int i=1, j=1; j<5; i++,j++)
  cout << "hi\n";

因为 i<10 没有副作用.

语句的值i<10, j<5;j<5; 的值.

关于c++ - 一个for循环的测试条件可以放多个关系表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19517008/

相关文章:

c++ - 我什么时候应该使用新的 ranged-for,我可以将它与新的 cbegin/cend 结合使用吗?

javascript - js for 循环排序数字

c# - 在具有相同签名的.Net 3.5 中实现 Expression.Assign?

c++ - OBB-OBB 交点

c++ - 使用函数模板返回 X 类型变量的值

java - 减慢 Java For 循环中对象的移动速度

c++ - 改变一个值并知道它是否在一行中改变

c# - 组合表达式列表中的表达式

c++ - C++ 程序中的奇怪错误 : Removing Printout Breaks Program

c++ - 为什么采用 int 的函数重载优于采用 unsigned char 的函数重载?