私はいくつかの再帰で遊んでおり、再帰的な関数(以下のコード)で追加回数を数えようとしています。問題は、g_add
はゼロ以外の何ものでも印刷されないということです。デバッガでは正しく設定されていますが、正しく表示されません。実際には、以下のコードはちょっと修正され、他のすべてがOKであることを健全性のチェックにします。実生活では、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上の任意の考えを正しく印刷されていませんか?そして私はそれについて何ができましたか?私は揮発性のキーワードの有無にかかわらず試しました。私はこれがC + +ではなくVS環境に関係していると思うので、私は両方をタグ付けしました。
機能オペランドの評価順序が標準で指定されていない第三引数(rfib(N))の前に(g_add)