Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解C语言中for循环的基础知识_C_Loops_For Loop_Char - Fatal编程技术网

了解C语言中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,则退出循环 变量更新在第一次迭代之后完成,从

任何人都可以用以下代码解释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,则退出循环


变量更新在第一次迭代之后完成,从第二次迭代开始,它在条件检查之前完成。

让我们把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
}