c 的迴圈問題

時間 2022-05-30 11:20:10

1樓:慕容冰綃

簡單的說就是,i為unsigned char型,即不可能是負數,所以它永遠都大於等於0,即for迴圈的條件一直滿足,死迴圈了

2樓:阝東亻韋

我通過對下列**的測試得出:

#include

void main()

上面的四個程式都出現了死迴圈,通過分析得出是因為:當i的值相對於他所定義的型別溢位時,系統將對i隨機的進行賦值(對於其賦值是否有規律暫時不知),使其仍滿足for迴圈從而造成死迴圈。

例如,樓主所寫的那個程式當for執行到i=0時,對i進行--運算。這時i溢位,隨機的產生一個數,如i=200;這時i仍滿足for迴圈,繼續執行。當再次執行到i=0時,對i進行--運算,使得i的值再次變成200;for迴圈依舊滿足,從而造成死迴圈。

3樓:匿名使用者

unsigned char i

因為定義i為無符號數 其範圍是0到255 i到了0之後再減一就會變成了255。和i等於255加上一變成0是一個道理的了。所以i永遠會是大於等於零的了。應該明白了吧。

4樓:

--! 你的i是char型別~~你把它當int型用當然錯了

具體字元那邊是怎麼實現的就不知道了

5樓:匿名使用者

死迴圈?

應該是編譯錯誤或警告吧

C語言for迴圈的問題,C語言迴圈問題

一個偽 告訴你真相 我是大圈 一圈跑完,大圈還要跑嗎 要跑 繼續大圈與小圈的迴圈,不要跑 跳出迴圈 多層巢狀也是一樣 我是外圈 跑完了小圈,繼續中圈 中圈已結束 跳出中圈繼續執行外圈。中圈還沒結束 繼續中圈的迴圈 現在中圈也跑完了,再來跑大圈 如果大圈跑完了,該迴圈結束,還沒有的話繼續上面的奔跑,r...

c語言迴圈問題,C語言 迴圈問題

迴圈體是 do while迴圈,執行語句的時候,第一次是先進入 do 裡,執行其中語句,第一次迴圈 a 2 這一句執行的結果是a被重新賦值為 10 2 12 x a 這一句執行的結果是x被重新賦值為 0 12 12 if x 50 的結果為 假 false 不執行 break while a 14 ...

C 中關於case中for迴圈的問題

這是由於vc 和標準不一致造成的,我們來考察程式中那個for語句中的i的作用域,按照標準,在for的初始化部分宣告的變數作用域應該在for中,而vc 把這個變數的作用域擴充套件到for所在的層次,就是說在for之後也是可以使用的,那麼按照去掉大括號的程式,i的作用域是從宣告之處到switch的大括號...