C語言面試題,這樣寫代碼會導致For死循環!你該注意的細節!

今天給大家帶來一道華爲公司C語言面試題,話不多說直接上代碼,你知道如下代碼爲什麼會導致 for循環 成爲一個死循環嗎?

大家可以仔細思考一下,如果思考不出來也沒關係,繼續向下滑動,我將會爲大家揭開答案。如果有了自己的答案,也可以向下滑動來看一下是否真的如你所想。

現在我們來分析一下上面的代碼,代碼中MAX的數值爲255,而for循環中,i<= MAX,這也就意味着i的取值範圍是[0,255]。

看起來似乎並沒有什麼問題,但是當執行到A[255] = 255時,這條語句本身沒什麼問題。

但是當執行完這條語句之後繼續執行下一條語句i++的時候就會出問題,此時i的值會從255變成0,那麼這是爲什麼呢?

問題就出在 i 的數據類型上,i 的數據類型是 unsigned char,這就意味着 i 的取值範圍只能是[0,255],當 i = 255 時,繼續執行 i++ 就會導致 i 數值越界產生溢出,這時候 i 的數值就會變成 0 ,導致下一輪循環的開始,如此這般往復就導致了無限死循環。


對於熱愛編程的人來說,有一羣一起學習一起解答的小夥伴很重要!

小編有一個C/C++編程學習交流俱樂部,直達通道:【點擊進入】!

還有編程學習文件(源碼,零基礎教程,項目實戰教學視頻),歡迎初學者和正在進階中的小夥伴們!

來自作者:薛定諤的coding貓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章