ベストアンサー
出題者は、ローカル変数と静的変数の扱いを理解を要求するしていると思う。 1. int main()関数 ループ変数 i を定義。 for ループ内で以下の処理を3回実行(i = 0, 1, 2): x = 2; としてローカル変数 x を定義。 static int y = 1; として静的変数 y を定義(初期化は1回のみ)。 計算: x = x + y; y = x + y; x = x - y; 計算結果を printf で出力。 ++x; と ++y; で変数をインクリメント。 実行の流れ 初期状態 x = 2 y = 1(静的変数なので、1度だけ初期化される) 1回目のループ(i = 0) x = x + y = 2 + 1 = 3 y = x + y = 3 + 1 = 4 x = x - y = 3 - 4 = -1 出力: x = -1, y = 4 ++x = -1 + 1 = 0 ++y = 4 + 1 = 5 2回目のループ(i = 1) x = 2(ローカル変数なので再初期化) y = 5(静的変数なので前回の値を保持) x = x + y = 2 + 5 = 7 y = x + y = 7 + 5 = 12 x = x - y = 7 - 12 = -5 出力: x = -5, y = 12 ++x = -5 + 1 = -4 ++y = 12 + 1 = 13 3回目のループ(i = 2) x = 2(ローカル変数なので再初期化) y = 13(静的変数なので前回の値を保持) x = x + y = 2 + 13 = 15 y = x + y = 15 + 13 = 28 x = x - y = 15 - 28 = -13 出力: x = -13, y = 28 ++x = -13 + 1 = -12 ++y = 28 + 1 = 29 出力結果 プログラムが出力する値は以下 x = -1 y = 4 x = -5 y = 12 x = -13 y = 28
この回答はいかがでしたか? リアクションしてみよう