gpt4 book ai didi

c++ - 全局变量无法在 Visual Studio 中正确打印

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:45 26 4
gpt4 key购买 nike

我正在玩一些递归,并试图计算递归 fib 函数(下面的代码)中的添加次数。问题是,g_add 永远不会打印为零 (0) 以外的任何内容。在调试器中它设置正确,但它不会正确打印。事实上,下面的代码稍作修改,以检查其他一切是否正常。在现实生活中,g_add 最初设置为零,而不是下面的 10,但看看输出正在打印...

volatile int g_add = 10;
int rfib(int n)
{
if(n == 0) return 0;
else if(n == 1) return 1;
else {
++g_add;
return rfib(n-1) + rfib(n-2);
}
}

int _tmain(int argc, _TCHAR* argv[])
{

printf("Fib: %d\n", g_add);
for(int n =0; n<6;n++,g_add = 0)
{
printf("Fib %d is: %d - additions: %d\n", n, rfib(n), g_add);
}
}

输出:

Fib: 10
Fib 0 is: 0 - additions: 10
Fib 1 is: 1 - additions: 0
Fib 2 is: 1 - additions: 0
Fib 3 is: 2 - additions: 0 (note, the debugger says it is 1)
Fib 4 is: 3 - additions: 0
Fib 5 is: 5 - additions: 0

关于为什么 g_add 没有被正确打印的任何想法?我能做些什么呢?我尝试过使用和不使用 volatile 关键字。我认为这可能与 VS 环境有关,而不是 C++,所以我标记了两者。

最佳答案

您假设参数的计算顺序。

改用这个:

int fib = rfib(n);
printf("Fib %d is: %d - additions: %d\n", n, fib, g_add);

关于c++ - 全局变量无法在 Visual Studio 中正确打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1364953/

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