我是靠谱客的博主 谨慎网络,最近开发中收集的这篇文章主要介绍C++/C深入理解for,while和do while循环,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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循环所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部