while:格式为while() {循环体},其中括号内的内容可以是我们定义的变量,也可以是一个表达式(如n==3),可以这样理解,当括号内的变量或表达式的值为真(非0)时会执行循环体中的程序,当循环体执行结束后指令流又会回到while语句对括号内的值进行判断,若为真这再次执行循环体程序,若为假则不再执行该循环,简单的说就是只要while的括号内值为真就可以反复执行循环体的程序,若为假循环体将不会在被执行。
do while:格式为do {循环体} while(); ,循环执行的条件和while相同,不同的是do while语句会先执行一次循环体后再判断括号内值的真假从而决定是否执行下一次循环,也就是说无论do while()括号内的值是否为真循环体程序都至少会执行一次,要注意do while()语句要在while()后加分号“;“。
for:格式为for( 变量或表达式; 变量或表达式;变量或表达式 ) {循环体},其中括号内的符号" ; "为分号,我们将括号内的三个“变量或表达式”从左到右称为“A”,“B”,“C”,也就是for(A;B;C)。for的执行逻辑如下:如果for是第一次执行,那么会首先执行一次“A”(否则跳过“A”直接判断“B”);然后判断”B“是否为真,若为真则执行循环体,否则for语句循环结束;每次循环体执行完成后会执行 “C”。一个for语句的常用方法是for(int i=0;i<20;i++) {循环体}就可以通过for定义一个局部变量来执行相应次数的循环。另外for语句中的A,B,C都可以为空语句,当三者皆为空语句是就是死循环
说for括号内定义的是局部变量的证明如下:
#include<stdio.h>
int main()
{
int i = 3;
for (int i=0;i<1;i++)
{
printf("循环体执行\n");
printf("%d\n", i);
}
printf("循环体结束\n");
printf("%d\n",i);
return 0;
}
当在for内定义变量时,在循环体内使用的是局部变量int i=0;这个i的改变并不会影响到for之前定义的int i=3中i的值,运行结果如下图
题外话:循环语句的循环体不一定需要用花括号包括——如果循环体只有一号代码或空语句时可以用分号划分循环语句范围
#include<stdio.h>
int main()
{
while (0)
printf("1"); //循环体
//-------------------------------------------
do
printf("1"),printf("1");//循环体
while (0);
//-------------------------------------------
for (;;) ; //空语句循环体
return 0;
}