for循环中的三语句执行顺序
2013-12-04 15:48
453 查看
for循环的执行语法是:
for(<;初始化>;<条件表达式>;<增量>) 语句;
初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用";"分开。
在for循环中的三个语句执行顺序是如何的呢?通过对汇编代码的调试发现了其中的玄机。
可以看到for循环的执行过程是:
1.首先对变量int i进行赋值,而后从第3行跳到第7行;
2.执行条件表达式,判断是否跳出循环;
3.执行for循环体;
4.执行循环体完毕后,从26行跳转到第4行,执行增量语句,再顺序判断条件表达式;
5.执行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循环的语句执行顺序
- 关于for循环中三个语句的执行顺序
- for循环语句头的执行顺序
- 助教:C语言问题收集--scanf()的一些常见问题;switch语句;for循环的执行顺序
- for循环的语句执行顺序
- C/C++拾遗录--for循环中的三语句执行顺序
- for循环语句头的执行顺序
- C语言for循环语句的执行顺序
- for循环语句中的先后执行顺序
- for循环的语句执行顺序
- for循环的语句执行顺序
- for循环的语句执行顺序
- for循环语句头的执行顺序
- for循环语句头的执行顺序
- C 中for 循环语句执行顺序之我是汇编
- for循环语句头的执行顺序
- C语言for循环的执行顺序
- for循环的执行顺序
- 循环语句的嵌套,控制执行顺序语句巩固.。
- for 循环执行顺序