关于for循环i++

wmxfdfj 2009-09-14 11:52:08
有如下代码:
#include <iostream>
int main()
{
using namespace std;

int i,s = 0,b = 0;

for(i = 0;i < 2;i++ )
{
cout << "i1 = " << i << endl;
s += i;
b += i;
cout << "i2 = " << i << endl;

}
return 0;
}
请问变量i自加到底是在什么时候进行的?
...全文
206 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
snake4 2009-09-15
  • 打赏
  • 举报
回复
for(i = 0;i < 2;i++ )
{
/*.....*/
}
//i++ 在大括号结束后执行。。
//每次执行前首先判断i,然后执行大括号里面的内容,然后才i++
mstlq 2009-09-15
  • 打赏
  • 举报
回复
等价代码

#include <iostream>
int main()
{
using namespace std;

int i,s = 0,b = 0;
i=0;
while(i < 2 )
{
cout << "i1 = " << i << endl;
s += i;
b += i;
cout << "i2 = " << i << endl;
i++;

}
return 0;
}
JK0803_lijixiang 2009-09-15
  • 打赏
  • 举报
回复
等价代码
C/C++ code
#include<iostream>int main()
{usingnamespace std;int i,s=0,b=0;
i=0;while(i<2 )
{
cout<<"i1 ="<< i<< endl;
s+= i;
b+= i;
cout<<"i2 ="<< i<< endl;
i++;

}return0;
}
[/Quote]
Z782282738 2009-09-15
  • 打赏
  • 举报
回复
见过WHILE循环吗?一样的位置。
tutu08 2009-09-15
  • 打赏
  • 举报
回复
学习了
qinken547 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mu_yang 的回复:]
引用 4 楼 prince_sigh 的回复:





[/Quote]
lihan6415151528 2009-09-15
  • 打赏
  • 举报
回复
基础
mu_yang 2009-09-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 prince_sigh 的回复:]

[/Quote]


forster 2009-09-15
  • 打赏
  • 举报
回复
; 10 : {

push ebp
mov ebp, esp
sub esp, 12 ; 0000000cH

; 11 : using namespace std;
; 12 :
; 13 : int i,s = 0,b = 0;

mov DWORD PTR _s$[ebp], 0
mov DWORD PTR _b$[ebp], 0

; 14 :
; 15 : for(i = 0;i < 2;i++ )

mov DWORD PTR _i$[ebp], 0
jmp SHORT $LN3@main
$LN2@main:

mov eax, DWORD PTR _i$[ebp]
add eax, 1
mov DWORD PTR _i$[ebp], eax 准确位置


$LN3@main:
cmp DWORD PTR _i$[ebp], 2
jge SHORT $LN1@main

; 16 : {
; 17 : cout <<"i1 = " <<i <<endl;

mov ecx, DWORD PTR __imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z
push ecx
mov edx, DWORD PTR _i$[ebp]
push edx
push OFFSET $SG-89
mov eax, DWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A
push eax
call ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<<std::char_traits<char> >
add esp, 8
mov ecx, eax
call DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z
mov ecx, eax
call DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z

; 18 : s += i;

mov ecx, DWORD PTR _s$[ebp]
add ecx, DWORD PTR _i$[ebp]
mov DWORD PTR _s$[ebp], ecx

; 19 : b += i;

mov edx, DWORD PTR _b$[ebp]
add edx, DWORD PTR _i$[ebp]
mov DWORD PTR _b$[ebp], edx

; 20 : cout <<"i2 = " <<i <<endl;

mov eax, DWORD PTR __imp_?endl@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@1@AAV21@@Z
push eax
mov ecx, DWORD PTR _i$[ebp]
push ecx
push OFFSET $SG-90
mov edx, DWORD PTR __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A
push edx
call ??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z ; std::operator<<<std::char_traits<char> >
add esp, 8
mov ecx, eax
call DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@H@Z
mov ecx, eax
call DWORD PTR __imp_??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z

; 21 :
; 22 : }

jmp SHORT $LN2@main
$LN1@main:

; 23 : return 0;

xor eax, eax

; 24 : }

mov esp, ebp
pop ebp
ret 0
_main ENDP
_TEXT ENDS
END
xiaoliang_c 2009-09-15
  • 打赏
  • 举报
回复
在执行完循环的判断条件之后下一句的下一句就执行i++
coolcoffee4051982 2009-09-15
  • 打赏
  • 举报
回复
基础知识
loveour 2009-09-15
  • 打赏
  • 举报
回复
for括号第一项最开始进行,然后循环:判断第二项,执行大括号内语句,执行第三项。所以,i++是在大括号内语句执行完毕之后进行的
yunccll 2009-09-15
  • 打赏
  • 举报
回复
你单步调试一下就知道是什么时候加了!
prince_sigh 2009-09-15
  • 打赏
  • 举报
回复
starcat 2009-09-14
  • 打赏
  • 举报
回复
cout << "i2 = " << i << endl;//这一句之后

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧