goto,即無條件跳轉指令,常與if搭配使用具體使用情況將舉例說明
例1:
#include <stdio.h>
int main(void)
{
goto ss;
printf("BBBB\n");
ss:
printf("AAAA\n");
return 0;
}
輸出結果爲:
由上面的結果可知,執行goto語句時,會直接跳轉到語句標號(這裏指的是ss)以後的語句,所以第6行代碼沒有被執行
goto語句一直爲人們所詬病,因其使得代碼可讀性變差且不易維護,
然而,正像另一些人說的,在有所限制的情況下使用它也會有一定的方便之處,比如說像下面的例子
例2:
# include <stdio.h>
int main(void)
{
int x;
int one, two, five;
printf("請輸入你所需要的錢數(只需輸入一個數字,單位爲元):");
scanf("%d", &x);
for (one=1; one<x*10; one++)
{
for (two=1; two<x*10/2; two++)
{
for (five=1; five<x*10/5; five++)
{
if (one + two*2 + five*5 == x*10)
{
printf("可以用%d個1角加%d個2角加%d個5角得到%d元\n", one, two, five, x);
goto out;
}
}
}
}
out:
return 0;
}
輸入一個數的結果爲:
這個程序是判斷需要多少個1角、2角和5角可以組成輸入的錢數,如果註釋掉19行的語句,則會將所有的情況輸出,但是,如果我們只想要一個結果,則需要在一個輸出後結束整個程序,當然,在不使用goto的前提下,我們可以向代碼中添加3個break分別將3個for循環結束,也可以加上# include <stdlib.h>頭文件後在一個結果輸出後用exit(0) 終止程序,但是,如果使用goto語句,則會相對簡單一些,既可以直接像上面程序那樣,輸出後直接跳轉到最後
goto也可以構成循環
例3:
# include <stdio.h>
int main(void)
{
int i = 0;
ss:
if (i < 5)
{
printf("最近比較忙\n");
if (i == 4)
return 0;
}
i++;
goto ss;
return 0;
}
輸出結果爲:
對於goto語句,因爲其缺點,而且平時基本用不到,再加上還有switch/case這樣的替代品,所以許多新手根本不會去了解,而且老師們一般也都不講或一句話帶過,說來慚愧,我以前也不知道這個怎麼用的,現在覺得它的確在一些方面有些用處,就記錄一下,如果以後看到相關的更多的知識,會予以補充
【所有代碼均在windows系統下C-Free5.0下運行通過】
(如有錯誤,敬請指正)