gpt4 book ai didi

c - 您如何解释这段代码输出中的差异?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:27 25 4
gpt4 key购买 nike

这段代码给出了意外的输出。当我注释 sumdig 函数的 printf 时,a 的返回值是 6,b 是 12,但是当保留 printf 时,a 是 5,b 是 6。请解释。

main()
{
int a,b;
a = sumdig(123);
b = sumdig(123);
printf("\na=%d b=%d",a,b);
return 0;
}


int sumdig(int n)
{
static int s=0;
int d;
if(n!=0)
{
d=n%10;
n=(n-d)/10;
s=s+d;
sumdig(n);
}
else
return s;
printf("\n s=%d",s);
}

最佳答案

如果您没有明确的 return 语句,则 int c 函数很容易返回上次调用的函数返回的任何值(尽管我相信实际行为是未定义的)。所以当您要返回对 sumdig 的递归调用的值时,您正在返回 printf 的结果。

代替 sumdig(n);,尝试 return sumdig(n);

关于c - 您如何解释这段代码输出中的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220440/

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