概述
for循环
假设有如下代码,求1到99的和;
#include <iostream>
using namespace std;
int main() {
int sum = 0;
for (int i = 0; i < 100; i++) {
sum += i;
}
return 0;
}
利用gdb的-g选项生成调式文件,执行调试文件,用disas对main函数进行反汇编.得到下图所示汇编代码。
注: cmpl S2,S1 S1 – S2比较双字,差关系。JG: 大于转移指令,0x63=99(十进制)。
即for(初始化表达式; 循环条件; 表达式) 语句块
被编译为
初始化表达式;
Label1: if(!循环条件) goto Label2;
代码块;
表达式;
goto Label1;
Label2:
从上面可以看到for循环必须执行两次jump,一次是当循环条件为false时,另一次则是在计算完表达式之后;jump指令影响指令的流水,至于while循环,其编译结果和for循环类似
do while循环
即do 语句块 while(循环条件) 被编译为
初始化表达式;
Label1:
代码块;
if(循环条件) Label1;
从上面可以看到for循环处理为do循环通常可以提高执行速度。
最后
以上就是谨慎网络为你收集整理的C++/C深入理解for,while和do while循环的全部内容,希望文章能够帮你解决C++/C深入理解for,while和do while循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复