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...