gpt4 book ai didi

c++ - 该函数应返回 1 但它返回 0

转载 作者:行者123 更新时间:2023-11-30 00:43:51 26 4
gpt4 key购买 nike

以下代码接受输入 x 和 y,然后调用一个函数。该函数应该被调用 3 次,在这种情况下它将返回 1。但是,如果 x 或 y 的值下降到非常低的水平,该函数将不会被调用 3 次,在这种情况下它将返回 0。

我的输入是 3, 22。我可以看到函数被调用 3 次后 t 的值变为 3,但是,它返回值 0 而不是 1(从 i 的值可以看出)。有人可以解释为什么会这样吗?

PS:代码的某些部分已被删除,以便我们可以只关注相关部分。

#include <iostream>
using namespace std;

int turn_yeh(int &x, int &y)
{
static int t = 0;

cout << "t : " << t << " x: "<< x<< " y : " << y<<endl;

if (t != 0 && t% 3 == 0) return 1;
if(x!= 0 && t!= 2){x--; t++; turn_yeh(x,y);}
else if(y >=10 && t!=2){y -= 10*t; turn_yeh(x,y);}
if( y >= 2 && t == 2){y -= 2; t++; turn_yeh(x,y);}
else return 0;
}


int main()
{
int x, y;
cin >> x >> y;

int i = 1;
while (1)
{
i = turn_yeh(x ,y);
cout << "i : " << i << endl;
if (i == 0)
{
cout << "Hanako";
return 0;
}

}
}

最佳答案

如果您使用既定约定之一写出大括号,您会很快发现在所有程序控制路径上都没有明确的 return 值。

这意味着您的代码行为未定义。 (请注意,main 是此规则的一个异常(exception),隐式添加了隐式 return 0; 语句。)

您可能想在缺少的分支上写 return turn_yeh(x, y)

引用:https://en.wikipedia.org/wiki/Indentation_style

关于c++ - 该函数应返回 1 但它返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52164121/

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