作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码接受输入 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)
。
关于c++ - 该函数应返回 1 但它返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52164121/
我是一名优秀的程序员,十分优秀!