for中疑问 大虾指教

Lynnlichao 2007-04-17 10:45:47
for(i=0;i<n;i++)



{
......

}
与for(i=0;i<n;++i)
{
.......

}

有何区别
i=0;
while(i<n)
{
if(...)
continue;
i++;
}

for(i=0;i<n;i++)
{
if()

continue;
}
又有什么差别
...全文
343 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
kakabulusi 2007-10-24
  • 打赏
  • 举报
回复
多循环一次
tianhuo_soft 2007-10-19
  • 打赏
  • 举报
回复
4: int i=0;
00401028 mov dword ptr [ebp-4],0
5: i++;
0040102F mov eax,dword ptr [ebp-4]
00401032 add eax,1
00401035 mov dword ptr [ebp-4],eax
6: ++i;
00401038 mov ecx,dword ptr [ebp-4]
0040103B add ecx,1
0040103E mov dword ptr [ebp-4],ecx


这是汇编代码 所以++i 和i++没有区别
Lynnlichao 2007-10-19
  • 打赏
  • 举报
回复
最近有些忙 所以来的少 感谢各位的回答
sirguan 2007-04-17
  • 打赏
  • 举报
回复
for版本的没有区别,while版本的区别如下
i=0;
while(i<n)
{
if(...)
continue;//如果条件为真,则i++不会执行
i++;
}

for(i=0;i<n;i++)
{
if()

continue;//不论条件真假,i++仍然会执行
}
--------------------------------
ps:这种问题,楼主单步跟踪一下就知道了,何必多次一问,不是大家不乐意回答,关键不利于提高楼主自己动手解决问题的能力。
Benny_ywb 2007-04-17
  • 打赏
  • 举报
回复
编码规范提倡++i
loongee 2007-04-17
  • 打赏
  • 举报
回复
就从作用上来说是完全一样的。
wenbin 2007-04-17
  • 打赏
  • 举报
回复
个人爱好
lockhall 2007-04-17
  • 打赏
  • 举报
回复
效率问题

不过一般可以不作此优化.
gshuangVC 2007-04-17
  • 打赏
  • 举报
回复
++i 比 i++ 的效率更高
deng2000 2007-04-17
  • 打赏
  • 举报
回复
关于for(..., ++i) 与 for(..., i++), 就程序运行结果而言,它们是完全等价的.就运行效率来说,由于i++会导致产生一个临时变量, 前者的效率高那么一点点. 当然,因为循环变量i是个最简单的integer类型,这点微小差别在实际中可以忽略不计, 除非你是在面试中应付变态考官问这一问题.

真正有意义的情况是循环变量是一个复杂类型的场合. 例如遍历STL中vector:
vector<int> vec;
...
for(vec::const_iterator i=vec.begin(); i!=vec.end(); ++i)
这时如果把最后的++i改成i++, 效率差别就比较大了.
todototry 2007-04-17
  • 打赏
  • 举报
回复
木什么区别的
linuxhaha 2007-04-17
  • 打赏
  • 举报
回复
for()好像更有效一些。
hellodudu 2007-04-17
  • 打赏
  • 举报
回复
好像没耶
zerofinish 2007-04-17
  • 打赏
  • 举报
回复
没有区别吧
freshui 2007-04-17
  • 打赏
  • 举报
回复
没区别
chensanniang 2007-04-17
  • 打赏
  • 举报
回复
有所心得:i++和++i 在单独作为一个语句的时候,好像没有多大区别,就我目前的水平来看好像是这么回事
楼主有什么好的心得可以再发帖.
chensanniang 2007-04-17
  • 打赏
  • 举报
回复
楼主再看:#include <stdio.h>
int main(void)
{
int a=0,b;
a++;b=a;
printf("%d\n",b);
a=0;
++a;b=a;
printf("%d\n",b);
return 0;
}
输出的都是1

chensanniang 2007-04-17
  • 打赏
  • 举报
回复
楼主这个问题有意思:++i和i++,也就是自增,我们常叫它自加.他们的区别是前者表示使用前就加一,后者则表示使用后加一.
它们也只有在特定的块中才会有区别,作用域以后,无区别.
例如:赋值时有区别a=i++;和a=++i;
bidepan2023 2007-04-17
  • 打赏
  • 举报
回复
楼上正解!

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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