for循环中的三语句执行顺序
for循环的执行语法是:
for(<;初始化>;<条件表达式>;<增量>) 语句;
初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用";"分开。
在for循环中的三个语句执行顺序是如何的呢?通过对汇编代码的调试发现了其中的玄机。
for( int i = 0;i <= 10;i++)
{cout<<i<<endl;
}
反编译后的代码如下
for( int i = 0;i <= 10;i++)
00413632 mov dword ptr [i],0
00413639 jmp main+104h (413644h)
0041363B mov eax,dword ptr [i]
0041363E add eax,1
00413641 mov dword ptr [i],eax
00413644 cmp dword ptr [i],0Ah
00413648 jg main+13Ch (41367Ch){cout<<i<<endl;
0041364A mov esi,esp
0041364C mov eax,dword ptr [__imp_std::endl (418290h)]
00413651 push eax
00413652 mov edi,esp
00413654 mov ecx,dword ptr [i]
00413657 push ecx
00413658 mov ecx,dword ptr [__imp_std::cout (418288h)]
0041365E call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (418298h)]
00413664 cmp edi,esp
00413666 call @ILT+315(__RTC_CheckEsp) (411140h)
0041366B mov ecx,eax
0041366D call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (418294h)]
00413673 cmp esi,esp
00413675 call @ILT+315(__RTC_CheckEsp) (411140h) }
0041367A jmp main+0FBh (41363Bh)
0041367C mov dword ptr [i],0
可以看到for循环的执行过程是:
1.首先对变量int i进行赋值,而后从第3行跳到第7行;
2.执行条件表达式,判断是否跳出循环;
3.执行for循环体;
4.执行循环体完毕后,从26行跳转到第4行,执行增量语句,再顺序判断条件表达式;
5.执行for循环体。。。
for循环中的三语句执行顺序相关推荐
- 关于Verilog中begin···end语句执行顺序
Verilog中分阻塞赋值和非阻塞赋值两种,组合逻辑多用阻塞赋值,此时使用begin···end语句,将一条执行完再执行下一句,即顺序执行. 而时序逻辑多是并行执行,多用非阻塞赋值,begin···e ...
- hmi中的宏指令是c语言,HMI中的宏指令编程中的语句执行顺序是?
HMI中的宏指令编程中的语句执行顺序是? 以威纶通里的例子为例: 4. if结构语句 macro_command main() int k[10], j for j = 0 to 10 k[j] = ...
- 整理:sql server 中sql语句执行顺序
原文地址为: 整理:sql server 中sql语句执行顺序 SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中 ...
- SQL Server 中SQL语句执行顺序
SQL Server 中SQL语句执行顺序 我们需要对SQL语句的执行顺序了若指掌,才能更好的理解SQL. SQL 不同于与其他编程语言的最明显特征是处理代码的顺序. 在大数编程语言中,代码按编码顺序 ...
- mysql limit 执行顺序_SQL语句执行顺序及MySQL中limit的用法
一. SQL语句执行顺序及MySQL中limit的用法 执行顺序:from... where...group by... having.... select ... order by... limit ...
- mysql五补充部分:SQL逻辑查询语句执行顺序
mysql五补充部分:SQL逻辑查询语句执行顺序一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SE ...
- for表达式的语句执行顺序?
for表达式的语句执行顺序? 例子1: 答案:A 1.for循环先执行表达式1,再执行表达式2,然后执行循环体,然后再来执行表达式3,若此时仍然满足表达式2,则继续执行循环体, 否则跳出for循环.m ...
- 关于sql和MySQL的语句执行顺序
sql和mysql执行顺序,发现内部机制是一样的.最大区别是在别名的引用上. 一.sql执行顺序 (1)from (3) join (2) on (4) where (5)group by( ...
- mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序
(8) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GROUP BY (6) HAVING ...
最新文章
- 快速破解哈希密文findmyhash
- 探测函数 中断 linux,linux中断编程函数
- Spring IOC的理解总结
- springboot之session、cookie
- jquery教程_jQuery教程
- mysql之 mysql_config_editor/login-path 登录密码保护
- Python3 验证二代身份证号码信息
- 告诉你守望先锋外挂的是什么技术原理
- JS逆向之网易云音乐
- Node.js基础入门
- [ linux ] vim 编辑器的三种模式介绍
- 【Python】:数据可视化之相关系数热力图绘制(二)(seaborn版本)
- 线性代数学习笔记——第二十一讲——矩阵秩的等式
- 设计和QQ一样动态登录界面
- eclipse建maven项目报: Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp:1.0
- 莫比乌斯函数的两种求法(基于欧拉筛、埃氏筛)
- IgH详解 一、概述
- matlab三轴陀螺标定,三浮陀螺仪漂移模型的建立及MATLAB实现
- 如何脱离数学推导理解欧拉角与万向节死锁
- SAP 会计凭证更改(FB02) 配置及注意事项
热门文章
- 【Flume】Flume原理简述及示例实践
- SSH免密登录(笔记)
- 中科院基于gpt的学术优化网站搭建教程
- python拼音怎么写-Python汉字转换成拼音
- 云管平台 | 云成本分析优化管理
- Web前端——移动端页面开发
- Python基于人脸识别的考勤系统(附源码)
- epub解压的多个html制作单个html
- [已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
- valgrind检测内存泄漏,gperftools,memwatch和性能优化Messy_Test