『壹』 以下的C程序代碼為什麼會出現死循環錯在哪裡希望高手指點。
第一個循環,i=N的時候數組越界了。數組范圍只能是a[0][0]~a[9][9]。
死循環,應該說很多編譯器對於這個代碼都會生成產生死循環的代碼。因為i的聲明雖然在a[N][N]之前,但賦值是在其後。因此i在內存上的實際位置,會變為a[N][N]之後的第一個位置,所以樓主的代碼執行到a[10][1] = 1 時,正好將i重新初始化為1了
『貳』 什麼是死循環
在編程中,一個靠自身控制無法終止的程序稱為「死循環」。
例如在C語言程序中,語句「while(1)printf("*");」就是一個死循環,運行它將無休止地列印*號。不存在一種演算法,對任何一個程序及相應的輸入數據,都可以判斷是否會出現死循環。因此,任何編譯系統都不做死循環檢查。
在設計程序時,若遇到死循環,可以通過按下Ctrl+Pause/Break的方法,結束死循環。然而,在編程中死循環並不是一個需要避免的問題,相反,在實際應用中,經常需要用到死循環。
(2)死循環會在編譯的時候出錯嗎擴展閱讀
死循環的產生原因:
死循環也可能因為多個模塊之間的交互而產生。考慮一台伺服器若收到無法理解的需求時,會回應錯誤信息,此架構中不會有死循環。
但若有二台上述的伺服器(A和B),互相交換數據,A收到由B所提交無法理解的需求,會回應錯誤信息給B,但若B也無法理解A提交的需求(其實是A的錯誤信息),會再以自己的格式回應錯誤信息給,A收到後無法理解,會再回應錯誤信息給B。像郵件循環就是這類的例子。