了解C语言中for循环的基础知识
任何人都可以用以下代码解释for循环的工作原理:了解C语言中for循环的基础知识,c,loops,for-loop,char,C,Loops,For Loop,Char,任何人都可以用以下代码解释for循环的工作原理: #include<stdio.h> #include<conio.h> int main() { char i=0; for(i<=5&&i>=-1;++i;i>0) printf("%d\n",i); getch(); } 当for循环开始时,变量初始化阶段只执行一次 每次在循环中运行代码之前都会检查该条件。如果条件为false,则退出循环 变量更新在第一次迭代之后完成,从
#include<stdio.h>
#include<conio.h>
int main()
{
char i=0;
for(i<=5&&i>=-1;++i;i>0)
printf("%d\n",i);
getch();
}
当for循环开始时,变量初始化阶段只执行一次
每次在循环中运行代码之前都会检查该条件。如果条件为false,则退出循环
变量更新在第一次迭代之后完成,从第二次迭代开始,它在条件检查之前完成。让我们把for语句分解一下,我们有三个阶段,初始化器、测试和修饰符:
for(<Initialiser>; <Test>; <Modifier>)
<content>;
…出于所有目的,这与for循环初始化器在正常情况下所做的相同。接下来要评估的是for循环的初始化器:
i<=5 && i>=-1;
该值计算为1,并将该值指定给i。现在,当它被计算为非零数时,循环执行:
printf("%d\n",i);
数字1被打印到屏幕上。。。现在执行的是修饰符:
++i;
i>0
我是1,所以它大于0。其计算结果为1或true。不管怎样,这都被忽略了。修饰符的目的不是测试或检查任何东西。它就在那里,这样您可以在每次for循环迭代时更改程序的状态。无论哪种方式,循环都会重复,并且会持续很长时间。为什么?因为++我将在一段时间内计算为一个非零的数字。它是否会终止取决于系统如何处理整数溢出
这就是你想要做的:
#include<stdio.h>
#include<conio.h>
int main()
{
for(char i=0; i<=5&&i>=-1; ++i)
printf("%d\n",i);
}
这个片段:
for(i<=5&&i>=-1;++i;i>0)
printf("%d\n",i);
是否与此相同:
i<=5 && i>=-1; //statement with no effect
while(++i)
{
printf("%d\n",i);
i>0; //statement with no effect
}
所以,它将打印i,直到++i计算为0。这将在i溢出并变为负数后发生,然后向0递增。这将需要255次迭代,因为char最多可以存储256个不同的值。fora;BC{d;}与a相同;whileb{d;c;}。那段代码完全误用了for循环。您可能需要类似于fori=0的值;我知道这一点,但上面的代码是如何工作的?你为什么要考虑getch;作为循环的一部分?因为我误读了代码!很好,我将编辑答案。+1是一个很好的解释。一件事-将getch放在for循环之外。
#include<stdio.h>
#include<conio.h>
int main()
{
for(char i=0; i<=5&&i>=-1; ++i)
printf("%d\n",i);
}
0
1
2
3
4
5
for(i<=5&&i>=-1;++i;i>0)
printf("%d\n",i);
i<=5 && i>=-1; //statement with no effect
while(++i)
{
printf("%d\n",i);
i>0; //statement with no effect
}