| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2250 人关注过本帖
标题:执行语句: for(i=1;i++
只看楼主 加入收藏
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
以下是引用走刀口→超在2006-6-12 9:44:00的发言:
最后=5。
for(i=1;i++<4;);
有点想不明白。不过觉得问题应该出在最后这个“;”号上!!!!
解释下。。。。

最后这个“;”号表示循环体是“空语句”(什么也不干)。
for(i=1;i++<4;); 的等价变换是
/////////////////////////////////////////////
i=1;
goto end;
Loop:
; /*do nothing*/
end:
if(i++ < 4)goto Loop;
/////////////////////////////////////////////
for(i=1;i++<4;); 与
for(i=1;i<4;i++);并不等价。因为后者等价于
/////////////////////////////////////////////
i=1;
goto end;
Loop:
; /*do nothing*/
i++;
end:
if(i < 4)goto Loop;
/////////////////////////////////////////////


落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-12 10:16
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
明白空语句的了。以前也听过。没太注意。
可是为什么它做出来的答案会等于5呢?
不是DO NOTHING么?

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-12 10:17
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
因为“i++”这东西像百年陈酿,后劲大呀。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-12 10:20
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 
这样也可以哒。
也许明白了吧。空语句这东西很少用到吧?
个人感觉不是这么有用,也许是么有经历过吧。总之~明白了哈~谢谢~

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-06-12 10:21
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
恩。看来我犯了一个错误。一直以来以为for(i=1;i++<4;); 与for(i=1;i<4;i++);等价。

在此向楼主道歉

我的原则很简单:不做不喜欢的事!
2006-06-12 10:24
wonshing
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2006-5-7
收藏
得分:0 

又了解了一个细节问题


别人笑我太疯癫,我笑他人看不穿 C , ASM , MCU , JAVA , Linux , VHDL , EDA ,PLC
2006-06-12 11:00
greenjolly
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-6-10
收藏
得分:0 

嗯~来这 学到真不少~


2006-06-12 13:08
joylmj
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-2-25
收藏
得分:0 
第1次循环,i=1;(i++)=1;1<4成立执行空语句 ;,此时,i=2;
第2次循环,i=2;(i++)=2;2<4成立执行空语句 ;,此时,i=3;
第3次循环,i=3;(i++)=3;3<4成立执行空语句 ;,此时,i=4;
第4次循环,i=4;(i++)=4;4<4不成立跳出循环,同时执行了i++语句,i进行了自增运算,故i=5;

我是这么分析的,有点烦琐,呵呵!


努力学习C语言中!
2006-06-12 13:44
aczhe
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-12-23
收藏
得分:0 

我也以為等於4呢


君子敬其在己者,而不慕其在天者,是已日进也。
2006-06-13 09:19
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
类似问题还有字符串长度测试
int fun1(const char *s)
{ char *p=s;
while(*p++);
return(p-s-1);
}
int fun2(const char *s)
{ char *p=s;
while(*p)p++;
return(p-s);
}
//事实上这两个函数都是正确的。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-13 10:30
快速回复:执行语句: for(i=1;i++
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017443 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved