c語言goto語句死迴圈,goto語句是迴圈語句 會死迴圈 嗎?

2021-10-17 04:48:58 字數 5028 閱讀 9798

1樓:鬼火狼煙

當執行到goto num;,程式就會跳轉回到num:printf ("a ");然後又繼續向下執行,如此反覆迴圈下去

2樓:♂凡鳥

你的for迴圈每次初始i=0;然後進來goto num,這樣每次for迴圈中的判斷i都是0<10,所以就是死迴圈。

所以說一定要把判斷條件的初始化放在迴圈開始之前。

此處應該把i = 0的賦值放在num前面

3樓:匿名使用者

只要向前並且沒有條件的goto都是死迴圈。

num:

...goto num;

執行到這句就回到前面執行。這不就是標準的死迴圈嗎。

goto一般都是有條件的goto。比如:

if (error) goto error;

error:

錯誤處理

這樣判斷某種錯誤後就直接轉到錯誤處理去,不要再做其他工作了。

4樓:初中數學講析

goto 的功能:

每次執行到這句:goto 標記;程式會跳到 有標記的那句**,如上面的:num:printf ("a ");

上述之所以會死迴圈是因為:執行到 goto num; —> num:printf("a"); —> for( i = 0; i < 10; ++i )

此處會 i = 0(始終)。

可以這樣改:

#include

#include

int main (void)

for ( ;i < 10; )

system ("pause");

return 0;

}這樣改了之後還是不好,for() 迴圈語句的功能沒有很好的體現(goto 跳出了for(語句1;語句2;語句3 ) 迴圈是不會執行 語句3 的)。

goto太靈活了,容易使得程式結構變亂(不知道跳過了那些語句)。

程式的調式建議使用 vc 的斷點。

5樓:匿名使用者

#include

#include

int main (void)

system ("pause");

return 0;

}for迴圈用的不對吧

6樓:buta丶瀟

執行到"goto**"的時候,程式會自動跳到goto後面跟著的字元標誌處,即"num"處..

但是"num"處位於"goto"**之前,因此跳到了"num"的**處向下走,會又一次碰到goto..

如此迴圈反覆..因此會變為死迴圈...

另外goto語句的用法就是 goto+標誌, 如題中例子 num就是"標誌",當執行到goto的時候,會直接跳到"標誌"的地方,在標誌處繼續向下執行..

c中的這個用法很常見,比如執行到某個地方用"goto"跳到另外一個地方接著執行.然後再用"goto"跳回來..

注:其中的標誌可以任意設定,標誌之間名字儘量不要重複.

goto語句是迴圈語句(會死迴圈)嗎?

7樓:匿名使用者

goto loop; 會跳到上面 loop 標記的位置繼續向下執行。

goto本身不是迴圈語句,但是當goto跳轉到的標記位於回goto語句之前,使得會再次執答行到該goto語句,那麼就形成了**的迴圈執行。

可以像樓上那樣有條件地執行goto語句,或者在loop標記與goto loop;之間增加某個條件判斷,達到條件時使用exit退出語句。

8樓:自己剪頭發

一般都不用goto語句的

你這樣寫當然會死迴圈了

可以判斷一下

if(...)

goto ...;

else

...;

c語言中goto語句的用法??舉例來說。

9樓:飛喵某

1、c語言中goto又叫無條件轉移語句,可以讓程式直接跳轉到任意標記的位置。用法就是「goto label……label:」。

下面用一個示例來演示具體的用法,這裡先新建一個c語言的程式檔案,演示使用的是visual studio軟體作為開發工具:

2、輸入goto語句應用**,這裡先定義兩個變數a和b,然後用printf函式列印兩句話,直接用goto語句強制跳轉到列印b語句的end標記位置,此時a的列印就不會執行了:

3、編譯執行程式,按下crtl+f5開啟命令列,就可以看到執行的結果,列印出了b語句,和預期的結果一樣。以上就是c語言中goto的用法:

10樓:哇哎西西

goto語句可以使程式在沒有任何條件的情況下跳轉到指定的位置,所以goto語句又被稱為是無條件跳轉語句。

它的語法如下

goto label;

//其它**

label:

其中,label為我們自己定義的一個標籤,定義的規則與變數的命名相同,它的位置是不固定的,它可以寫在goto語句的後面,也可以寫在它的前面,然而goto語句只能在一個函式內部跳轉,它並不允許跳轉出一個函式外部。

int day = 1;

loop:

if (day <= 31)

上面程式就是利用了goto和if語句來實現了迴圈功能,它與while實現的迴圈功能一樣,其中loop為我們定義的一個label(標籤)。

11樓:丿染指流年丶丶

goto語句也稱為無條件轉移語句,其一般格式如下: goto 語句標號; 其中語句標號是按識別符號規定書寫的符號, 放在某一語句行的前面,標號後加冒號(:)。

語句標號起標識語句的作用,與goto 語句配合使用。

如: label: i++;

loop: while(x<7);

c語言不限制程式中使用標號的次數,但各標號不得重名。goto語句的語義是改變程式流向, 轉去執行語句標號所標識的語句。

goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。

但是,在結構化程式設計中一般不主張使用goto語句, 以免造成程式流程的混亂,使理解和除錯程式都產生困難。

擴充套件資料:

pascal

格式 goto 《標號》;

其中標號需要申請,在程式開頭寫label 《標號1>,《標號2>,……;

其中,標號必須為四位以內的正整數。

在該段落內還需要有《標號》:語句 表示將要轉向的方向。

goto語句與組合語言裡面的jmp指令相同,(無條件轉移)

1+2+3........+8+9+10

nasm描述:

mov ax,1

mov bx,0

start:add bx,ax

inc ax

cmp ax,11;比較指令

jzend ;零轉移

jmp start

end:

;;start: end:是標號

12樓:匿名使用者

用法如下:

goto語句也稱為無條件轉移語句,其一般格式如下:

goto 語句標

號; 其中語句標號是按識別符號規定書寫的符號, 放在某一語句行的前面,標號後加冒號(:)。語句標號起標識語句的作用,與goto 語句配合使用。

例子: label: i++;

loop: while(x<7);

c語言不限制程式中使用標號的次數,但各標號不得重名。goto語句的語義是改變程式流向, 轉去執行語句標號所標識的語句。

goto語句通常與條件語句配合使用。可用來實現條件轉移, 構成迴圈,跳出迴圈體等功能。

但是,在結構化程式設計中一般不主張使用goto語句, 以免造成程式流程的混亂,使理解和除錯程式都產生困難。

13樓:匿名使用者

基本上c語言中不推薦goto的使用,不符合程式化設計的理念,呵呵。不過也是迴圈的一種方式

舉例如下:

#include

int main(int argc, char *ar**)

14樓:匿名使用者

在c語言中不推薦使用goto,會造成混亂。但goto在有些情況下使用是很好的。

1,在多重迴圈時需要退出迴圈時,break只能退出當前迴圈,而使用goto可以直接跳出。

2,作為一種條件,直接跳轉。

15樓:匿名使用者

for(……;……;……)

……lable:

但是一般不建議使用goto語句,因為這樣很容易出現亂指的現象,比較麻煩···

16樓:匿名使用者

goto 語句標號:

例程:#include

void main()

printf("%d\n",sum);

}建議別用goto 如果濫用的話 會造成程式可讀性差。

17樓:匿名使用者

goto的用法前面已經有人回答了,我就不重複了。

原則上是最好不要用,因為程式要講究結構性、可讀性,goto語句會破壞這點。

但萬事不是絕對的,什麼時候應該用goto語句呢?

只有在程式做的很大,有動一下痛全身的感覺時,但只要加個goto語句卻能省下很多時間和麻煩,這時用goto語句比較好。

另外,團idc網上有許多產品**,便宜有口碑

c語言 我希望輸錯了,有提示然後能重新輸入,但當輸入小數,字母是會進入死迴圈···應該錯在goto語句吧 40

18樓:匿名使用者

你這問題跟goto半毛錢關係都沒有。

是你沒用對scanf造成的死迴圈。

你的scanf語句中,只接受整型格式,如果碰到像「12.3」「12qw12」這種輸入的話,是會陷入死迴圈的。因為scanf("%d",&select)這一句,只會取走stdin中的符合整型的那部分:

「12qw12」中的「12」(格式串的處理順序為從左到右,格式說明符逐一與變元表中的變元匹配),而「qw12」仍然在stdin中,這就導致下次執行到scanf這一句時,讀不到整型,從而陷入死迴圈。

c語言為什麼for是死迴圈,C語言中程式如for為什麼是死迴圈

for 按語法,for 迴圈 初態 終態 步長 這三部分,現在 是 空語句 回 空語句 空語句 是合法的答語句。由於沒有給 終態 即允許繼續迴圈和終止迴圈的條件 迴圈語句於是可以 永遠繼續下去。俗稱 無限迴圈 或 死迴圈。但通常 迴圈體內 會有 語句控制 決定 是否中止。例如for for 當然,必...

c語言中什麼叫死迴圈?怎麼避免,C語言中什麼叫死迴圈?怎麼避免?

就是迴圈條件總是滿足,無法退出迴圈啊 比如最簡單的 while 1 有時候不注意就容易引起這種情況 int i 0 while i 10 死迴圈就是這樣的 int x 0 while x 0 也就是說沒有關鍵性的結束迴圈的語句,導致沒有終止的執行迴圈體裡面的程式段,就是死迴圈 沒有迴圈終止條件,或者...

c語言巢狀迴圈中的continue語句

continue語句 表示終止本次 本輪 迴圈。當 執行到continue 時,本輪迴圈終止,進入下一輪迴圈。比如下面的 include int main return 0 當i j的和是偶數時,輸出i j i j的值,當不是偶數時則終止本次迴圈,終止本次迴圈,執行下一輪的條件判斷,它只侷限於con...