我正在编写一些 C++ 代码以供娱乐和练习,以了解有关语言功能的更多信息。我想更多地了解静态变量及其在递归函数中的行为。在 g++ 编译器中尝试这段代码,我得到了预期的结果:
#include <iostream>
using namespace std;
int f(const int& value)
{
static int result = 0;
return result += value;
}
int main()
{
cout << f(10) << ", " << f(f(10)) << ", " << f(f(f(10)));
return 0;
}
但是我的朋友在 Microsoft Visual C++ 6 中测试了相同的代码。输出是50, 80, 90
我用其他 C++ 编译器(Linux、Win 和 Mac 下的 g++、Borland、Code::blocks 和 MingW)测试它的输出是110, 100, 40
. 我无法理解输出如何50, 80, 90
......
为什么 MSVC 的输出不同?