return语句的位置
要求写一个找最大值的函数,我刚开始写的时候将return语句放在了循环里,结果正数数组可以找到最大值但是负数数组不行然后我把return放在了循环外面,负数数组可以了,这是什么原理???
这是第一次写的:
int array_max(int a[], int len) {
int x;
int max;
max = a;
for (x = 0; x < len; x++) {
if (max < a) {
max = a;
return max;
}
}
return 0;
}
int main() {
int a = {-1,-17,-4,-31,-10};
int x;
x = array_max(a, sizeof(a)/sizeof(a));
printf("%d\n", x);
return 0;
}
output: 0
这是修改之后的:(main不变)
int array_max(int a[], int len) {
int x;
int max;
max = a;
for (x = 0; x < len; x++) {
if (max < a) {
max = a;
}
}
return max;
}
output:-1
修改前:
若找到max < a, 将a赋值给max后,立刻执行return max,而停止对a[]中剩余数据比较。
若没有max < a, 将执行return 0
修改后:
不管有没有max < a,max会和a[]中所有数据比较后被返回
main()中,a[]中的最大值为 - 1。
执行修改前代码,由于没有执行if,所以return 0; 输出是0。
修改后,max和a[]中所有数据比较完,值没有被更改,return max,返回 - 1 酷小子 发表于 2020-1-23 15:00
修改前:
若找到max < a, 将a赋值给max后,立刻执行return max,而停止对a[]中剩余数据比较 ...
哇,懂了懂了,谢谢
页:
[1]