gpt4 book ai didi

c - 将值返回给 main 后输出发生变化! (请给出一个简单的修复)

转载 作者:行者123 更新时间:2023-11-30 21:15:19 24 4
gpt4 key购买 nike

这是一个打印 n(2 的幂)大小数组中最大元素的程序。当我在函数内部打印时,输出是正确的,但当我将值返回到主函数时,输出会发生变化。

    #include <stdio.h>

#define max(x,y) (((int)((x)<(y)) * (y)) + ((int)((y)<=(x)) * (x)))

int compare(int *arr,int sze){
static int i ;
int nsize = sze/2;
int arr2[nsize];
for(i = 0; i < sze ; i += 2){
int x = max(*(arr + i),*(arr + i + 1));
printf("%d\n",x );
arr2[i/2] = x;
}
if(nsize == 1){

int t = arr2[0];
printf("abc%d\n", t ); //correct output
return t;
}
printf("\n");
compare(arr2,nsize);
}

void main(){
int size = 8;
int arr[8] = {12,14,54,76,87,89,45,34};
int maximum = compare(arr,size);
printf("Maximum value in the array is %d\n", maximum ); //wrong output
}

输出是:

    14
76
89
45

76
89

89
abc89
Maximum value in the array is 4195472

最佳答案

您不会将值返回给 main,因此在使用“返回值”时会出现未定义的行为,例如compare 的最后一行应该是:

return compare(arr2,nsize);

关于c - 将值返回给 main 后输出发生变化! (请给出一个简单的修复),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39962388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com