[英]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.