gpt4 book ai didi

c - 为什么我在以下代码中遇到段错误(核心转储)?

转载 作者:行者123 更新时间:2023-11-30 21:32:28 25 4
gpt4 key购买 nike

在此代码中,使用 a--b++ 显示段错误,但如果我给出 --a++b 它可以工作,为什么?!

add(a,b)
{
if (a==0)
return b;
else
return add(a--,b++); //why this line didn't work??!
}

最佳答案

后自增和自减运算符实际上是在表达式求值后递增或递减值,这意味着在传递ab后,它将更改它们的值到函数。

这样,您最终将始终将 ab 的未更改值传递给 add () 函数,这将导致堆栈溢出(导致段错误),因为这本质上是一个永远不满足返回条件的递归函数。

OTOH,如果使用预自增或自减运算符,ab 的值在传递给递归 add () 之前会先减少 调用,从而满足返回 条件,因此您的程序按预期运行。

也就是说,您应该指定函数的返回类型,例如,在本例中为 int

关于c - 为什么我在以下代码中遇到段错误(核心转储)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296752/

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