幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5381|回复: 22

[通用编程] 关于if.....else

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-9-11 11:35:45 | 显示全部楼层 |阅读模式
这问题想问好久了,但一直没问
具体的例子忘记了,但记得以前是这种情况
在一个FOR循环中,放入IF....ELSE  ..IF什么条件就进行, ELSE 就BREAK;
但是当IF的条件为假时,ELSE却是不能退出循环的,而且FOR会进进行到底,
为什么会这样的呢?只有一个IF才能用BREAK;退出程序吗?[s:8]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-11 18:32:19 | 显示全部楼层
break是迴圈才有效,某記得的好像if中是不理會break的
所以應該昰沒關係的。。。

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-11 18:37:45 | 显示全部楼层
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.     for(int i=0;i<5;i=0){
  5.         if(1!=2){
  6.             cout << "BAKA " ;
  7.         }else{
  8.             break;
  9.         }
  10.         cout << "kill me" << endl;
  11.     }
  12.     return 0;
  13. }
复制代码
例中for(int i=0;i<5;i=0)是一個不會停的loop
如果if , else一段被注解,程式會一直寫 kill me kill me....
加上後,由於1!=2 -> true 所以會一直寫BAKA kill me BAKA kill me ....
但改成1==2 ->false後,程式會行break,停止for loop,結果啥也沒寫出來
可見if 中的break對if是無效但對if所在的loop有效

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
 楼主| 发表于 2007-9-11 22:27:04 | 显示全部楼层
[s:3] 意思是说BREAK 只会对循环有效,而对IF..ELSE就无效吗?

上例还不是通过IF条件不成立,然后执行ELSE下的BREAK;?
所谓的IF不理会BREAK怎么理解呢... [s:6]
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-9-11 22:33:35 | 显示全部楼层
....他是指IF就没有意义了....
if(a&lt;=10)
{      break;
      i=i+1;
}
else
{
   ...
}
执行BREAK直接跳出IF.....整个IF就没有意义了...
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-12 22:10:16 | 显示全部楼层
如何說。。。
就是break在那兒也好,只會脱離迴圈,不理會有多少個if包住

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

3

主题

11

帖子

113

积分

③业余

积分
113
发表于 2007-9-13 17:52:45 | 显示全部楼层
break 和 if  没关系
回复 支持 反对

使用道具 举报

1

主题

11

帖子

123

积分

③业余

积分
123
发表于 2007-9-13 23:00:44 | 显示全部楼层


做了個Experiment:
在 i = 5 的時候, if 裡面 Break 之後的 cout &lt;&lt; &quot; skipped &quot; 並沒有執行, 且inter_flag亦沒有變成1, 即是break 把 for loop 和 if 都即時停止了。
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-9-14 18:12:26 | 显示全部楼层
那不如做這樣的一個實驗
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4. if(1==1){
  5. break;
  6. cout << "inside";
  7. }
  8. cout << "outside";
  9. return 0;
  10. }
复制代码

會出現error: break statement not within loop or switch
即是說,break不會對 if有效

break 把 for loop 即時停止了,但不是if

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

1

主题

11

帖子

123

积分

③业余

积分
123
发表于 2007-9-14 21:52:08 | 显示全部楼层
Break have broken the whole for, so everything, including the If, will cease instantly.
So the flag didnt turn 1
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 13:48 , Processed in 0.026147 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表