for 循环中改变变量的值

zz_d 2011-06-18 07:04:03
c 的 for 循环中改变变量的值 收藏
不知道何时起, 非常刻意避免在 for 循环体内改变变量值. 似乎是受别人观点影响, 但却并不知晓原因.

可是有时候用其他方法替代却不方便, 自己试了一下, 或许找到了一丝差异.

用这种方法赋值时, 没有出现问题:

#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++)
{
i = i+2;
printf("%d\n", i);
}
return 0;
}

但是另外一种赋值方法, 却是不行的.

#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++)
{
i = 2; // 将永远循环下去
printf("%d\n", i);
}
return 0;
}


不知是否只是这个原因, 才有很多提倡不要再 for 循环体内改变变量值的.
还是有很多其他方面? 或者说根本没有这样一种说法?
...全文
2031 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gilnuy0106 2011-06-19
  • 打赏
  • 举报
回复
如果是循环体内再重新定义的i还会对循环条件产生影响么?
AnYidan 2011-06-19
  • 打赏
  • 举报
回复
如果lz 保证循环正确,也没有什么不可以的,写好注释,别让维护程序的人骂你
wwwypy 2011-06-19
  • 打赏
  • 举报
回复
一楼说的很明白了,楼主好好看看。
哈特比尔波 2011-06-18
  • 打赏
  • 举报
回复
同一个变量,如果在循环中不要直接定义常量值,如果非要重新定义可以再给一个条件:什么时候可以是什么样的值。如果在循环体中重新定义了这个变量的值为一个常量,那么这段代码就是死循环或只能执行一次而不是你要的循环效果。如果飞得说一下的话就是这个值由用户输入,但是效果一样。
cqltwslt 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bjtbjt 的回复:]

不建议再循环体内
再去修改i的数值
这种做法,违反循环
本身的意思。
[/Quote]
同感,必要的时候可以
但是规范好些..
5t4rk 2011-06-18
  • 打赏
  • 举报
回复
不建议再循环体内
再去修改i的数值
这种做法,违反循环
本身的意思。
紫色动力 2011-06-18
  • 打赏
  • 举报
回复
我一般把变量放循环里。
for(int i = 0; i != 10; ++i)
zz_d 2011-06-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hedy007 的回复:]

C/C++ code

#include <stdio.h>
int main()
{
int i,j=0;
for(i=0; i<10; i++)
{
j = j+2;
printf("%d\n", j);
}
return 0;
}
[/Quote]

不知楼上给出这段代码什么意思? 在下眼拙.
hedy007 2011-06-18
  • 打赏
  • 举报
回复

#include <stdio.h>
int main()
{
int i,j=0;
for(i=0; i<10; i++)
{
j = j+2;
printf("%d\n", j);
}
return 0;
}
zz_d 2011-06-18
  • 打赏
  • 举报
回复
不好意思,我没表达清楚意思, 第二个死循环原因我知道.

只是不知道还有没有其他一些典型的不可以的在for循环内改变值的方式?
hackbuteer1 2011-06-18
  • 打赏
  • 举报
回复
没有这个说法的,内部、外部改变都是可以的,关键要看你程序的要求了,你的第二个赋值,肯定是死循环了,内部把i赋值为2,i++后i的值是3,肯定小于10,就这样每次都是小于10,就会在那边死循环了。。
bdmh 2011-06-18
  • 打赏
  • 举报
回复
内部改变,就是后可能导致你的循环丢失条件,或出错,越界等问题
ryfdizuo 2011-06-18
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++)
{
i = 2; // 每次将i设为2,然后i++,判断i<10满足,再次i设为2,后面同理,死循环。
printf("%d\n", i);
}
return 0;
}

69,378

社区成员

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

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