目录
一.while循环
<1>.格式
<2>.while循环的关键要素
<3>.while循环就是通过if+goto演变过来的
<4>.while循环看它往回跳的位置来确定整个循环的范围
二.do...while循环
<1>.格式
<2>.do...while反汇编表达式判断条件是正的,判断条件是什么指令就是什么.
三.while与do while的区别
一.while循环
<1>.格式
While(表达式)
{
语句
}
While(表达式)
{
语句
}
while()里的表达式可以是关系运算,可以是算术运算,算术运算一定要注意容易造成死循环,一定要加上break;关系运算就看表达式的关系是否成立,while循环一般情况下都是用的关系运算
<2>.while循环的关键要素
1.需要括号里的表达式成立
2.判断哪个变量就要给那个变量设置条件
3.判断条件不能存放结果
1.需要括号里的表达式成立
2.判断哪个变量就要给那个变量设置条件
3.判断条件不能存放结果
<3>.while循环就是通过if+goto演变过来的
goto语句相当于汇编的jmp指令,也是和lab搭配使用
int fun()
{
//定义变量
int a;
int b;
//初始化
a=1;
b=1;
lab:
if(a<=5)
{
b=a+b;
a++;
goto lab;
}
printf("%dn",b);
return 0;
}
int fun()
{
//定义变量
int a;
int b;
//初始化
a=1;
b=1;
while(a<=5)
{
b=a+b;
a++;
}
printf("%dn",b);
return 0;
}
goto语句相当于汇编的jmp指令,也是和lab搭配使用
如上面代码所示,while循环就相当于if+goto.
<4>.while循环看它往回跳的位置来确定整个循环的范围
while(a<=5)
{
b=a*b;
a++;
while(a)
{
b++;
}
}
上面代码外面一层循环里面一层循环,怎么确定它的循环范围,如下图所示是它的反汇编
如图所示,关键点看往回跳的位置,图上已做了清楚的标注,红框为外层循环范围,橙框为内层循环范围.
二.do...while循环
<1>.格式
do
{
语句
}while(表达式);
do
{
语句
}while(表达式);
注意看清楚,Do while 后面要记得有个分号,
<2>.do...while反汇编表达式判断条件是正的,判断条件是什么指令就是什么.
do
{
b=a+b;
a++;
}while(a<=5);
上面代码的反汇编如下图所示
如图可以看出,判断条件是小于等于,反汇编里的指令也是小于等于
三.while与do while的区别
while是先判断后执行
do while是先执行后判断
int fun1()
{
int a;
int b;
a=10;
b=0;
while(a<=3)
{
b=a+b;
a++;
}
printf("%dn",b);
return 0;
}
int fun1()
{
int a;
int b;
a=10;
b=0;
do
{
b=a+b;
a++;
} while (a<=3);
printf("%dn",b);
return 0;
}
while是先判断后执行
do while是先执行后判断
如上面代码所示,while循环与do...while循环明显结果不同,因为判断条件就算不满足,do...while也会先执行一次
今天的文章就到这里了,如果有任何不明白的地方欢迎与我交流,我必定知无不言。这篇文章也花了一定的心血,喜欢的小伙伴可以点赞关注哦。感激不尽!


![[逆向|C语言]C语言while do while [逆向|C语言]C语言while do while](http://www.mshxw.com/aiimages/31/982189.png)
