for实现无限循环的的问题

malu_1982 2008-09-07 10:59:21

for( : : )
{
... ...
}


实现无限循环的时候大家都这么写,但是不知道是什么原理。
请知道这个原理的xdjm解释一下。
...全文
2708 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
大牛~Daniel 2008-09-08
  • 打赏
  • 举报
回复
for(语句1;语句2;语句3)
{
.......
循环体
.......
}
语句1是控制变量初始化;
因为语句2是判断循环的条件,
当条件为“真”或表达式的值为“1”时,执行循环体,然后执行语句3,(在为空的时候表示没有判断,即为"真",循环体将不停的执行);
语句3是控制循环变量,通过改变循环变量的值,再加上语句2的判断,可以控制循环次数。
当语句为for(;;),它将因为没有控制条而无限循环下去。
建议LZ要好好看书了咯!
kelvin_2013 2008-09-08
  • 打赏
  • 举报
回复
up
csgdseed 2008-09-08
  • 打赏
  • 举报
回复
用while(1)好像多点
mifeixq 2008-09-08
  • 打赏
  • 举报
回复
for (1;2;3)
就相当于
1
while(2)
{
...
3
}

至于while(1) 和for(;;)
看个人习惯而用吧
blackcat242 2008-09-08
  • 打赏
  • 举报
回复
真没注意
cooler36659266 2008-09-08
  • 打赏
  • 举报
回复
学习了,原来没条件的for也可以做死循环,用while(1)还要判断,但貌似还是用while(1)的人多,不知道为什么
Jacky_yu 2008-09-08
  • 打赏
  • 举报
回复
学习了,呵呵
wensheng_zh2007 2008-09-08
  • 打赏
  • 举报
回复
都要“钻”地里了
frank_323 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 CSYNYK 的回复:]
这么理解吧!
for( ; ; )------无条件循环,不用判断条件
while( 1 )------有条件循环,有条件就要判断条件是否成立,所以多几条指令;对于条件是立即数(常数)的,有些编译器也会优化掉那几条指令!
[/Quote]
stormxs 2008-09-08
  • 打赏
  • 举报
回复
应该是看个人习惯吧
帅得不敢出门 2008-09-08
  • 打赏
  • 举报
回复
If cond-expression is omitted, it is considered true and the for loop will not terminate without a break, return, or goto within statement.

A convenient way to specify an infinite loop using the for statement is:

Copy Code
for( ; ; )
{
// Statements to be executed.
}

imdemon 2008-09-08
  • 打赏
  • 举报
回复
看下VC6编译后的结果,不优化

for( ; ; )
{

}
00401087 |.- EB FE jmp short WIN32C~1.00401087
原地无条件跳转


while(1)
{

}
0040108C |. 0000 add byte ptr ds:[eax],al
0040108E |? 85D2 test edx,edx
00401090 |? 74 02 je short WIN32C~1.00401094
00401092 |?^ EB F5 jmp short WIN32C~1.00401089
00401094
有判断,只不过条件永真




http://www.shubulo.com
richbirdandy 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 malu_1982 的回复:]
哦 公司入职之后考试的时候考了这个

for( ; ; )中间的那个表达式没有,应该是假吧, 觉得更像while(){... ...}, 但是while()是错的
[/Quote]
神啊 公司还有入职考试 还以为只有入学考试。。。
puzzlesky 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 blackcat242 的回复:]
真没注意
[/Quote]
heroforyou 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 PenglueR 的回复:]
for(语句1;语句2;语句3)
{
.......
循环体
.......
}
语句1是控制变量初始化;
因为语句2是判断循环的条件,
当条件为“真”或表达式的值为“1”时,执行循环体,然后执行语句3,(在为空的时候表示没有判断,即为"真",循环体将不停的执行);
语句3是控制循环变量,通过改变循环变量的值,再加上语句2的判断,可以控制循环次数。
当语句为for(;;),它将因为没有控制条而无限循环下去。
建议…
[/Quote]

回答得很明确
malu_1982 2008-09-07
  • 打赏
  • 举报
回复
哦 公司入职之后考试的时候考了这个

for( ; ; )中间的那个表达式没有,应该是假吧, 觉得更像while(){... ...}, 但是while()是错的
pengzhixi 2008-09-07
  • 打赏
  • 举报
回复
没有判断条件那么就为永真咯
lzp765 2008-09-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 CSYNYK 的回复:]
这么理解吧!
for( ; ; )------无条件循环,不用判断条件
while( 1 )------有条件循环,有条件就要判断条件是否成立,所以多几条指令;对于条件是立即数(常数)的,有些编译器也会优化掉那几条指令!
[/Quote]

编译器会优化,所以觉得是个人习惯吧.
zhkefa 2008-09-07
  • 打赏
  • 举报
回复
还真没留意过,,
_石头_ 2008-09-07
  • 打赏
  • 举报
回复
这么理解吧!
for( ; ; )------无条件循环,不用判断条件
while( 1 )------有条件循环,有条件就要判断条件是否成立,所以多几条指令;对于条件是立即数(常数)的,有些编译器也会优化掉那几条指令!
加载更多回复(4)

69,337

社区成员

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

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