gpt4 book ai didi

c - 错误: control reaches end of non-void function:(

转载 作者:行者123 更新时间:2023-11-30 18:48:42 25 4
gpt4 key购买 nike

我知道之前已经有人问过这个问题,但我仍然找不到解决方案。该程序应该使用递归对数字中的所有偶数位求和。这是产生错误 control reaches end of non-void function 的代码:

#include<stdio.h>

int sum_even_d(unsigned long n);

int main()
{
unsigned long n;
int x;
printf("Enter n : \n");
scanf("%lu",&n);
x=sum_even_d(n);
printf("%d\n",x);
return 0;

}

int sum_even_d(unsigned long n)
{
if(n==0) return 0;
if(n%2==0)
return (sum_even_d(n/10)+n%10);//*error here*//
}

如果我添加一行,程序就可以完美运行。我不明白是什么造成了差异:

#include<stdio.h>

int sum_even_d(unsigned long n);

int main()
{
unsigned long n;
int x;
printf("Enter n : \n");
scanf("%lu",&n);
x=sum_even_d(n);
printf("%d\n",x);
return 0;

}

int sum_even_d(unsigned long n)
{
if(n==0) return 0;
if(n%2==0)
return (sum_even_d(n/10)+n%10);
else return (sum_even_d(n/10));//*added this*//
}

最佳答案

在第一个代码段中,当 n 为奇数时,函数 sum_even_d 将不会到达任何 return 语句。但由于该函数被定义为非 void,因此它必须返回一个值。这就是编译器告诉你的。在第二个片段中,您的 else 语句负责处理此代码路径。

关于c - 错误: control reaches end of non-void function:(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44930026/

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