0

小问题只是为了澄清。

在 ZX-Spectrum BASIC 编译器中有 FOR TO STEP NEXT 循环,其中 TO 是无条件的:

10 FOR i=1 TO 5 STEP 1

我在 C 中尝试过类似的做法

for (i=1; i==5; i++); 

当然循环不起作用(== 在这里永远不会是真的)......所以问题是:

在 C FOR 循环中,我们应该始终使用 CONDITION 来停止循环(我的意思是 FOR 语句括号中的 CONDITION),例如 FOR (i=0; i<6 ; i++);

4

5 回答 5

4

正确翻译:

for i = 1 to 5 step 1

将会:

for (i = 1; i <= 5, i++)

换句话说,一个循环运行五次,控制变量设置为1, 2, 3,45顺序迭代。

您可以使用其他变体,例如不同的条件运算符和不同的终止值,但显示的最匹配 BASIC 变体,同时在您的步骤可能不止一个(例如for i = 1 to 4 step 2)的情况下仍然保护您。

请记住,C 数组是基于 0 的,因此,如果您使用它i来访问数组,它需要从 to 运行0n-1而不是1to n。如果您只想将变量用于其他目的(例如打印数字 1 到 5),则该1..n变体是可以的。

于 2013-07-27T07:50:52.337 回答
1

你可以使用

for (i = 1; i != 6; i++); 

但最好使用i = 0 ... i < 5,以防您i在循环内部进行更改。它还可以传达您做得更好的地方。

于 2013-07-27T07:46:19.400 回答
1

没有任何限制,您必须在 for 循环中使用条件语句。
您还可以在 for 循环体中使用此条件语句,如下所示......

for(int i=0;;i++)
{
      if(i>=5)
      {
         break;// to break the loop
      }
}

如果您不在 for 循环或 for 循环体中使用条件语句,则循环进入无限状态,如下所示......

for(int i=0;;i++)
{
    //any statements
}

因为在 for 循环中,所有三个部分都是可选的(初始化、条件、incri/decri)

int i=0
for(;;)
{
      if(i>=5)
      {
           //any statements
      }

      i++
}
于 2014-03-22T12:59:43.863 回答
0

循环条件不是必需的,您可以编写循环,例如

for(int i=0;;i++)
{
//body
}

但请注意,循环体应包含一些 break 语句,否则循环执行无限时间

于 2013-07-27T07:54:40.570 回答
0

您的代码中有两个问题,您不应该使用 ; 在你的循环头之后,你可以在你的条件部分使用 < 或 <= ,如下所示:

for(int i=1; i<=5; i++){}

所以它应该是一个条件,但你不必使用不等式你可以使用任何其他条件,但它应该完成一段时间

于 2021-11-26T18:08:14.023 回答