是否可以将多个关系表达式放入 for 循环的测试条件中
Can multiple relational expressions be placed into the test condition of a for loop?
我从Uni测验答案中得知:不能将多个关系表达式放入 for 循环的测试条件中。
我已经遵守并运行了以下代码:
int main()
{
for(int i=1;6<i<10;i++)
cout << "hin";
cin.get();
return 0;
}
和:
int main()
{
for(int i=1, j=1; i<10 && j<10; i++,j+=i)
cout << "hin";
cin.get();
return 0;
}
和:
int main()
{
for(int i=1, j=1; i<10, j<5; i++,j++)
cout << "hin";
cin.get();
return 0;
}
它们都使用预期的输出进行编译和运行。
在第一个示例中,"6 小于 i"的计算结果为 0,"0 小于 10"的计算结果为 1,导致无限循环,但它绝对是合法的代码,没有编译器错误。
干杯史蒂夫
行
for(int i=1, j=1; i<10, j<5; i++,j++)
cout << "hin";
与
for(int i=1, j=1; j<5; i++,j++)
cout << "hin";
由于没有i<10
的副作用。
语句i<10, j<5;
的值是 j<5;
的值。
我完全不确定我是否理解了这个问题,所以如果答案是错误的,请忽略答案;)
正如你所说,你编写的每个 for 循环都会编译而没有任何警告/错误,因为 for 中的表达式在最后是正确的,编译器只有一个声明(int i = 0,j = 1;只是一个产生两个不同变量的声明),一个条件(6
但可能"多个关系表达式不能放入 for 循环的测试条件中"指的是更具体的东西,如下所示:
for(int x = 0; x < 5; x ++)
{
for(int y = 0; y < 5; y ++)
{
printf("Hi from %dx%dn", x, y);
}
}
这次消息"Hi from %dx%d"将显示 25 次,在这种情况下,如您所见,代码不能只在一个 'for' 循环中编写。如果例如x和y变量,其中像素在屏幕中的位置,运行
for(int x = 0, y = 0; x < 5 && y < 5; x++, y ++)
{
printf("Hi from %dx%dn", x, y);
}
不会做你期望它做的事情,因为"for"循环将在打印 5 个"Hi from %dx%d"后退出(每次运行 for 时,x 和 y 变量无论如何都会递增 1,而第一个将为每个 x 值打印 5 次"Hi from %dx%x",最多 5 个, 如果您想获取屏幕上每个像素或多维数组中每个索引的信息,这将是正确的行为)。
你的前 2 个测试用例你有一个条件,这意味着 (6
因此,在这些情况下,您显然使用了一个语句。然而,你的第三个测试用例变得有点有趣。I<10,J<5写成两个陈述。它似乎被评估为 ((i<10) ||(j<5)),这是一个单一的陈述。但是,您编写它的方式确实表明您正在使用 2 个单独的语句。我想这只是措辞问题。
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么我的for循环不能正确获取argv
- 在基于范围的for循环中使用结构化绑定声明
- 通过for循环使用用户输入填充列表
- 使用for循环检查数组中的重复项
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 正在使用for循环创建QScatterSerie
- Python中的for循环与C++有何不同
- 在更改for循环的第三部分后,未使用for循环结果
- 在 for 循环中查找问题时遇到困难
- 嵌套for循环C++的问题(初学者)
- 如何用for循环在c++中生成单词三角形
- 如何在for循环中包含两个索引值的测试条件
- 带有多个独立参数的C++For循环
- C++ Python 循环"for i, num in enumerate(list):"版本
- C 多循环 for () 基础知识
- 没有条件值的 FOR 循环"for (int i = 1; ; i++)"无法正常工作
- 为用户提供循环for循环的选项
- 打破循环for循环