Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
嗨,我有这本书,里面有一个我无法回答的练习题。不......这不是一个家庭作业问题。这是我从推荐给我的一本书中的自学:《计算机系统,程序员的视角》
这是问题:
任何帮助表示赞赏!
length是无符号的,所以如果你传递0那个参数,length - 1will be UINT_MAX,而不是-1你想要的;因此循环将运行,您将在a.
length
0
length - 1
UINT_MAX
-1
a
改变这个unsigned length to int length 你的代码将完美运行
unsigned length to int length
而为什么上面的代码不起作用是
当您使用无符号长度时,如果您将 0 传递给长度,因此在循环中,您拥有(length - 1)的是在范围内循环并且它取最大值,因此循环出现分段错误
(length - 1)