刷csapp碰到的关于符号数的问题

关于书中有练习题2.25贴出了一段代码然后让我试图解释为什么这段代码在传入参数__length的值为0__时会造成segment fault.
代码如下:

float sum(float a[], unsigned length){
  int i = 0;
  float re = 0;
  for(; i <= length - 1; ++i){
    re += a[i];
  }
阅读 2.9k
1 个回答

因为length是无符号数,所以length-1 不是-1 而是65535,那么i就会越界。无符号数还是需要谨慎处理的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进