上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-30, PM 5:29 星期日 文章主題: 各位對goto的感想如何? |
|
|
聽說很多人不喜歡在程式內使用goto
各位對使用goto的感想是啥呢?
我是覺得還蠻好用的... |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
發表於: 2007-9-30, PM 7:05 星期日 文章主題: |
|
|
以前我也很喜歡用goto的 (會Basic時)
不過改學C/C++以後就沒在用了 (都用while迴圈,或是開個函數用)
-----------------------------------------------------------------
大家不用goto,是因為它會破壞結構化吧...(明明在某個函數中執行,卻跳到另一個函數裡的某個標籤之類的)
而且程式一大,要追蹤起程式碼會很麻煩... _________________ 已經畢業了!! |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-9-30, PM 7:08 星期日 文章主題: |
|
|
這個= =
我是寫C++的(只是沒用出物件導向部分= =..XD)
可是我蠻喜歡用goto的說~比while好用多了
而且用了goto可以少了不知道多少函數...
goto只有短程跳躍~不會跳到另外一個函數的標籤吧? |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
lsk 喜歡上這裡的冒險者
註冊時間: 2007-06-20 文章: 93
20.59 果凍幣
|
發表於: 2007-10-2, AM 3:09 星期二 文章主題: |
|
|
我的想法是:小的程式完全沒差!用在對的時機,goto是可以很好用的。只是學習語言的過程就是一種習慣的養成,如果是為了方便而只有學會用goto,將來有機會跟別人一起寫大型專案時就會吃到苦頭了。所以許多書乾脆教人不要用囉。 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-10-2, PM 6:48 星期二 文章主題: |
|
|
對於大型專案來講~
不常用goto嗎?
我覺得與其使用while~goto似乎比較好用?
另外我看了另外個論壇的文章
似乎只有學生(老師對學生)會比較禁止使用吧?
另外個問題~goto在普通的使用下應該不會跨越函數吧?
就是假如A跟B函數內有同樣的標籤~在B函數內用goto應該不會跳去A吧? |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
babu61509 散播福音的祭司
註冊時間: 2007-08-26 文章: 142
681.01 果凍幣
|
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
fire231 散播福音的祭司
註冊時間: 2007-09-15 文章: 152
322.55 果凍幣
|
發表於: 2007-10-2, PM 9:59 星期二 文章主題: |
|
|
大型的程式是多少以上才算大型的= =?
通常都是用很多的函數連接吧
既然goto的作用範圍只有在函數裡面
要檢查或是新增的時候應該不會差太多吧?
例如大大連結的網頁裡面
第1個我稍微修改了一下
代碼: |
#include <iostream>
using namespace std;
int main()
{
int input = 0;
begin:
cout << "輸入一數:";
cin >> input;
if(input == 0)
{
cout << "除數不可為0" << endl;
goto begin;
}
cout << "100 / " << input
<< " = " << static_cast<double>(100) / input
<< endl;
return 0;
}
|
在這小段程式裡 似乎上面會比較好用~至於大型程式我就不知道是多大了
代碼: |
#include <iostream>
using namespace std;
int main()
{
int input = 0;
while(true)
{
cout << "輸入一數:";
cin >> input;
if(input != 0)
{
cout << "100 / "
<< input
<< " = "
<< static_cast<double>(100) / input
<< endl;
break;
}
cout << "除數不可為0";
}
return 0;
}
|
我雖然會使用while不過不常用
而且我會用到goto是需要刷新畫面(選單) |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
曾佳彬 稍嫌羞澀的路人
註冊時間: 2007-11-13 文章: 1
0.00 果凍幣
|
發表於: 2007-11-13, PM 7:47 星期二 文章主題: |
|
|
goto是把兩面刃
如果用得好的話,結構可以寫的比只用 while for 來的緻密
但你就祈禱不要有 bug
一有 bug, 要嘛 眼鏡度數加深 要嘛 程式重寫
所以請避免用 goto 或別常用
我認為會用到 goto 的時機大概只有在交叉式回圈
或中途要在 3 ,4 層迴圈跳出時goto 就超好用 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
|