关于书中有练习题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.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];
}
因为length是无符号数,所以length-1 不是-1 而是65535,那么i就会越界。无符号数还是需要谨慎处理的。