Code Fix

上級static付きローカル変数が関数呼び出しをまたいで値を保持し続ける › パターン3

static付きローカル変数が関数呼び出しをまたいで値を保持し続ける

関数内でstaticを付けて宣言した変数は、関数を抜けても値が消えません。

 1  #include <stdio.h>
 2  
 3  int total(void) {
 4      ______ int sum = 0;
           ^
 5      sum += 3;
 6      return sum;
 7  }
 8  
 9  int main(void) {
10      printf("%d\n", total());
11      printf("%d\n", total());
12      printf("%d\n", total());
13      return 0;
14  }
出力: 3 3 3期待: 3 6 9

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

static付きローカル変数が関数呼び出しをまたいで値を保持し続ける

次回その関数が呼ばれたときも、前回の値から処理が続きます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)