• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:static変数のループ内での処理)

なぜC++のstatic変数はループごとに増えるのか?

このQ&Aのポイント
  • C++のstatic変数は、ループごとにカウントが増えていくような動作をする。
  • コンパイラは、staticが付いた変数を2度目のループ以降では無視するようにしている可能性がある。
  • この動作はC++の暗黙のルールの一つであり、他にも同様の挙動がある可能性がある。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

静的な変数は最初にそこを通ったときにのみ初期化される.

nekonimatatabi
質問者

お礼

ありがとうございます。 そういうものだと理解します。

その他の回答 (1)

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

int b = 100; とすると変数bはスタック領域に確保されます。スタック領域では関数に入るときに変数の領域が確保され、出るときに解放されます。ですから毎回毎回関数に入るたびに初期値100として確保されるわけです。 でも static int b = 100; とすると変数bはスタックではなく固定的な領域に確保されます。従って関数から出ても解放されずに確保されたところにそのまま残ります。次回関数に入ったときは同じところが使用されます。従って今回は関数内で計算が行われるたびに内容が変化します。

nekonimatatabi
質問者

お礼

ありがとうございます。

関連するQ&A