为什么我不能在 For 循环中使用 ==

本文关键字:循环 For 不能 为什么 | 更新日期: 2023-09-27 18:31:27

我不知道以前是否问过这个问题,但我仍然无法找到答案。我的问题是这个;在 For 循环中,这是可以接受的。

int k = 0;
for (int i = 0; i <= 10; i++)
    k++;

但这不是:

int k = 0;
for (int i = 0; i == 10; i++)
    k++;

为什么我不能使用"=="来确定条件是否已满足?我的意思是,这两个表达式都根据情况返回真或假,后者适用于 If 循环。

int k = 10;
if (k == 10)
{
    // Do stuff.
}

在我作为业余程序员期间,这个问题的答案一直困扰着我很长一段时间,但直到现在我还没有搜索过它。

为什么我不能在 For 循环中使用 ==

满足

条件时,for循环将运行。在开始时i = 0,所以你的测试i == 10永远不会满足,因此循环的主体永远不会被执行。

另一方面,您可以使用i == 0条件,并且循环只会执行一次:

for (int i = 0; i == 0; i++)
    k++;
这就是为什么

如果您希望 for 循环执行多次,则需要为迭代器变量提供一个<>的条件,以便在此迭代器变量递增/递减时可以多次满足它。

For 循环工作,直到条件为真,这样你就可以写

for (int i = 0; i <= 10; i++)
k++;

当您输入 i==10 时,它会检查 i 的条件是否等于 10。 显然 i = 0 在初始阶段,所以循环中断

因此,如果您想在某种条件下中断循环,那么最好应该使用

for (int i = 0; i <= 10; i++)
{
    if(i==5) // test with your condition
    break;
    k++;
}

你绝对可以写这样的条件。

只是没有多大意义。

以下是for循环的分解语法:

for(<initial statement>;<boolean expression - keep going while true>;<statement performed after each iteration>)

所以在你描述的典型场景中

for (int i = 0; i <= 10; i++)
    k++;

最初的声明是i声明。只要i保持 10 或更少,循环就会运行,并且在每次迭代后,i将递增 1。

总而言之 - 你完全可以写i == 10,只是它没有多大意义,因为循环不会运行,因为i已经是 0。如果您已将初始条件替换为int i = 10则它只会运行一次。您也可以将i != 10编写为条件,然后循环将执行 10 次。