English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類
0

int _tmain(int argc, _TCHAR* argv[])
{
int i;
int sum;
scanf(\"%d\",&sum);
if(sum > 5 && sum <=10)
goto endloop;
else if(sum > 10)
goto llp;
else
exit(1);
endloop:
printf(\"輸入5\\n\");
llp:
printf(\"輸入10\\n\");
return 0;
}

我輸入超過10的是自他彙印出10(正確)
為何當我輸入9 他會一起列印出5和10
不是應該只印出5嗎

2006-01-22 06:04:06 · 4 個解答 · 發問者 蔥頭 2 in 電腦與網際網路 程式設計

謝謝2位的回答 我已經了解了!

2006-01-22 07:54:35 · update #1

4 個解答

當然不是
goto就是到達你指定的那行然後往下執行
到了endloop:後
printf("輸入5\n");
llp:
printf("輸入10\n");
return 0;
以下這些都會執行到呀
goto跟函數呼叫是不一樣的東西
有點類似的例子就像是switch裡面
在每個case完成後必須加上break;
不然的話下面的case的內容也會全部執行
如果你想要在endloop:下做完printf("輸入5\n");之後就跳出的話
就必須加個return 0;才行

基本上很多程式設計教學的書籍都會強烈建議不要使用goto
理由就如同你目前所搞混的一樣
使用goto很容易一不小心就造成這樣的邏輯漏洞
所以在你對程式設計有很強烈的sense以及豐富的經驗之前
不建議使用goto

2006-01-22 07:38:30 · answer #1 · answered by ? 3 · 0 0

支持愛將看法。

蚯蚓所言〝在你對程式設計有很強烈的sense以及豐富的經驗之前
不建議使用goto〞也是正確。

可參敝人小著: http://www.phpbbserver.com/graphicsparalle/viewtopic.php?p=217

2007-09-14 22:43:56 · answer #2 · answered by ? 7 · 0 0

如果善用goto可以適時的簡化程式碼
就可以少寫一堆有的沒的判斷

別再認為書上或學校說goto強烈不建議使用所誤導
對於會善用使用此工具的人
將會成為利器

2006-07-16 14:24:48 · answer #3 · answered by ? 2 · 0 0

int _tmain(int argc, _TCHAR* argv[])
{
int i;
int sum;
scanf("%d",&sum);
if(sum > 5 && sum <=10)
goto endloop;
else if(sum > 10)
goto llp;
else
exit(1);
endloop:
printf("輸入5\n");
//<------------------------------這裡加一行 return 0;就OK了
llp:
printf("輸入10\n");
return 0;
}

用不用goto,我個人認為沒什麼差別,不然這指令造出來做什麼.
有很多高級的程式內還是可以看到goto的指令
一個程式有很多種方法可以寫出來,也就是說不管黑猫白猫,會捉老鼠的猫就是好猫,除非你的程式要有高效的執行速度,才要想用什麼方式才是最好的.

還冇看看組合語言內,goto是用的最多的,如果沒有goto,組合語言跟本無法寫的出來

2006-01-22 07:53:20 · answer #4 · answered by GC 2 · 0 0

fedest.com, questions and answers