有人能解释一下为什么输出是 C++ 递归函数吗
Can someone explain me why is that the output, C++ recursive function
我不明白为什么在 运行 这段代码之后
int n;
int f(int x)
{
int n;
if (x > 0)
{
if (x % 2 == 0)
{
cout << x % 10;
n = 1 + f(x / 10);
}
else
{
n = 1 + f(x / 10);
cout << x % 10;
}
return n;
}
else return 0;
}
int main()
{
cout << ' ' << f(8174);
return 0;
}
我得到 4817 4
而不是 48174
我需要更多的话,但我不知道该说什么:))
在 C++17 之前参数评估的顺序未指定。这意味着编译器可以在 std::cout << ' '
之前或之后 运行 f(8174)
(因此它的所有 std::cout << ...
语句)。
修复相当简单,您需要将 cout 分成两个语句:
int main()
{
std::cout << ' ';
std::cout << f(8174)
return 0;
}
我不明白为什么在 运行 这段代码之后
int n;
int f(int x)
{
int n;
if (x > 0)
{
if (x % 2 == 0)
{
cout << x % 10;
n = 1 + f(x / 10);
}
else
{
n = 1 + f(x / 10);
cout << x % 10;
}
return n;
}
else return 0;
}
int main()
{
cout << ' ' << f(8174);
return 0;
}
我得到 4817 4
而不是 48174
我需要更多的话,但我不知道该说什么:))
在 C++17 之前参数评估的顺序未指定。这意味着编译器可以在 std::cout << ' '
之前或之后 运行 f(8174)
(因此它的所有 std::cout << ...
语句)。
修复相当简单,您需要将 cout 分成两个语句:
int main()
{
std::cout << ' ';
std::cout << f(8174)
return 0;
}