私は楽しみと練習のためにいくつかの 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
をテストしました110, 100, 40
。出力がどのようになるのか理解できません50, 80, 90
...
MSVC の出力が異なるのはなぜですか?