嗨,我有这本书带有练习题,我无法回答。不,这不是一个功课问题。这是我从一本推荐给我的书中的自学:“计算机系统,程序员的观点”
以下是问题:
感谢任何帮助!
答案 0 :(得分:11)
length
是未签名的,因此如果您为该参数传递0
,则length - 1
将为UINT_MAX
,而不是-1
,就像您希望的那样;因此循环将运行,你将使a
的大小超出范围。
答案 1 :(得分:1)
更改此unsigned length to int length
代码将完美运行
而为什么上面的代码不起作用
当你使用无符号长度时,如果你将0传递给长度,那么在循环中你有(length - 1)
这是循环范围并且它取最大值因此循环得到分段错误