• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:初期化について C言語)

C言語初期化について

このQ&Aのポイント
  • C言語での初期化についての質問です。
  • 質問文章では、sdとvarの初期化について疑問があります。
  • また、sdは標準偏差、meanは平均値、varは分散を示しているとのことです。

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

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

> sdとvarは初期化されてないのですか? 初期化子を書いていないのですから初期化はされません。 初期化子を書かないのは、無用な初期化を省く意図を表しています。

その他の回答 (2)

  • LHS07
  • ベストアンサー率22% (510/2221)
回答No.2

double array[10], sd=0, var=0, mean=0; としないとです。 単なる変数の宣言だけでは変数のサイズだけ、メモリー上に割り当てられるだけで そのにどのようなあたいになっていてもそのままです。 ですから、代入式のない変数(書き方おかしいかな?)には、値を設定しておく習慣にしたほうが安心です。

回答No.1

はい、初期化されていません。 C言語では、「効率の良い」プログラムを書くための機能が備わっていますが、この「効率の良い」という言葉の意味は、あくまでも「コンピュータ上で実行した時に効率がいい」という意味であって、プログラミングの効率が良いという訳ではないのです。 ローカル変数が初期化されない仕様もその一つとなっています。 ですので、この場合ですとvarに(適切ではない)適当な値が入ってる状態でvar+=を行った為不正な値となっており、それが元でsdの値も不正な値になっていしまっている筈です。 宣言時かその直後に0を代入すると良いでしょう。 尚、グローバル変数と、staticをつけて宣言した変数は0等で初期化されます。 但し、staticを付けたローカル変数(厳密には静的変数)は、関数から抜けたあともその値を保持するため、再帰との相性は最悪と言っていいでしょう。

関連するQ&A

専門家に質問してみよう