簡體   English   中英

為什么當長度== 0時此練習代碼失敗?

[英]Why does this practice code fail when length == 0?

嗨,我有這本書的練習題,我無法回答。 不,這不是作業問題。 這是我從推薦給我的一本書中學習的內容:“計算機系統,程序員的視角”

這是問題: 在此處輸入圖片說明

任何幫助表示贊賞!

length是無符號的,因此如果您為該參數傳遞0 ,則length - 1將是UINT_MAX ,而不是您希望的-1 因此,循環運行,你會做的尺寸訪問非常外面a

將此unsigned length to int length更改unsigned length to int length ,代碼將完美運行

雖然上述代碼無法正常工作的原因是

當您使用無符號長度時,如果您將0傳遞給該長度,則在循環中您將擁有(length - 1) ,該(length - 1)在該范圍內循環,並且取最大值,因此循環會出現分段錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM