问一个简单的for循环 不懂

king_ellen_2012 2011-03-12 10:23:14

#include<iostream>

int main ()
{
int i;
for ( i=1; i != 9; ++i ) //这里第一次执行的时候不是2么?
std::cout<< i <<std::endl;



for ( i=1; i != 9; i++ ) //这里第一次执行的时候 i=2;但是返回1?
std::cout<< i <<std::endl;


return 0;
}

为什么红色跟绿色的输出结果是一样的?
...全文
325 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
ww884203 2011-03-13
  • 打赏
  • 举报
回复
不会执行++i或者i++才进循环,而是先进循环再加
莫二先生 2011-03-13
  • 打赏
  • 举报
回复
第一次都是i=1的,执行完再自增。。
前置和后置的自增运算,结果的i值都一样,加1,只是后置自增的左值返回时不加1。
如:
#include<iostream>
using namespace std;
int main ()
{
int i=0,j;
j=++i; //j=1,i=1
j=i++; //j=1,i=2 后置操作符返回未加1的值
return 0;
}
niuchuangok 2011-03-13
  • 打赏
  • 举报
回复
单独使用自增和自减运算符,放前面和放后面是一样的。
sie2010 2011-03-13
  • 打赏
  • 举报
回复
这个我不懂!跟着一起学习了!
wucap 2011-03-13
  • 打赏
  • 举报
回复
楼主对for循环的执行顺序没有理解清楚
Freedom 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 ding18914561272 的回复:]
for(表达式1;表达式2;表达式3)
{
循环体;
}
先执行表达式1,判断表达式2,如果成立执行循环体,否则跳出循环,之后执行表达式3;
[/Quote]
+1
shaotine_wu 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 npuhuxl 的回复:]

for(exp1; exp2; exp3)
exp4;


执行顺序
exp1;
exp2;
exp4;
exp3;
exp2;
exp4;
exp3;
exp2;
exp4;
……
[/Quote]
说的很清楚
碎碎念 2011-03-13
  • 打赏
  • 举报
回复
for ( i=1; i != 9; ++i ) //这里第一次执行的时候不是2么?
std::cout<< i <<std::endl;


for ( i=1; i != 9; i++ ) //这里第一次执行的时候 i=2;但是返回1?
std::cout<< i <<std::endl;

这两个for循环,输出结果是一样的...++i,和i++这在这里执行的效果没区别...
austinls 2011-03-13
  • 打赏
  • 举报
回复
++如果作为单独语句,前置后置结果一样。
但是++i更常用一些。
k123456y 2011-03-13
  • 打赏
  • 举报
回复
记得以前初学c语言时...
cumt_TTR 2011-03-13
  • 打赏
  • 举报
回复
我也为这个问题纠结过,哈哈
LBJMD 2011-03-12
  • 打赏
  • 举报
回复
一楼把执行顺序说的很清楚了
LLittleb 2011-03-12
  • 打赏
  • 举报
回复
for(条件1;条件2;条件3)
{循环内容;}
条件1是for循环第一次的时候用的条件,以后每执行一次循环内容,都会只判断条件2和条件3的了。

如果作为一条算术式的话,i++ 和++i是完全一样的,都是i自增1.
tomatobin 2011-03-12
  • 打赏
  • 举报
回复
。。显示完i后才进行递增操作的
机器再学习 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 king_ellen_2012 的回复:]
#include<iostream>

int main ()
{
int i;
for ( i=1; i != 9; ++i ) //这里第一次执行的时候不是2么?
std::cout<< i <<std::endl;


for ( i=1; i != 9; i++ ) //这里第一次执行的时候 i=2;但是返回1?
std::cout<< i <<std::endl;……
[/Quote]
这个当然是一样的了。执行++i和i++后,i都递增了,只不过是++i和i++值不同而已。
zicheng_lin 2011-03-12
  • 打赏
  • 举报
回复
看看基础的哦!
wei801516 2011-03-12
  • 打赏
  • 举报
回复
饿忘记 加上一个正常退出了

最后加个 return 0;
wei801516 2011-03-12
  • 打赏
  • 举报
回复
拆开成while循环看 你就明白咯

#include <iostream>

using namespace std;

int main()
{
int i = 1;
while (i != 9)
{
cout << i << " ";
i++;
}
cout << endl;

while (i != 9)
{
cout << i << " ";
++i;
}
cout << endl;

}


这个看 你就清楚咯!
kk5171 2011-03-12
  • 打赏
  • 举报
回复
i++ 和 ++i 都有将i自增1的作用,不同的是++i是先将i自增1然后再使用,而i++是先使用i原来的值,然后再将i的值自增1。在这个for循环中,i++ 和 ++i 都是将i自增1,而且没有使用i先后之分,所以效果是一样的。
愤怒的熊猫007 2011-03-12
  • 打赏
  • 举报
回复
是一啊~for循环的运行顺序
for(exp1; exp2; exp3)
exp1 然后判断是否符合 exp2的条件 符合了运行 不符合跳出循环
然后才exp3 然后判断是否符合 exp2的条件 符合了运行 不符合跳出循环
直到结束~~认真看下书~
加载更多回复(16)

64,637

社区成员

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

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