- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:宣言時に初期化した場合としない場合の違いは?)
宣言時に初期化した場合としない場合の違いは?
このQ&Aのポイント
- C言語の初心者が、配列の初期化について疑問を持っています。
- 配列に点数を読み込んで合計点と平均点を表示するプログラムを書いた場合、宣言時に初期化するかしないかで結果が異なります。
- 合計点を初期化しないと正しい値が出力されず、桁数の誤差が生じます。一方、配列の初期化は必要ありません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
cの場合は初期化していない変数は不定となりますが、変数vcは、scanfによる代入で、変数の値が置き換えられます。 これに対してsumは、「sumに何かを足す」ということになるので、変数の初期値の影響を受けることになります。
その他の回答 (2)
- TooManyBugs
- ベストアンサー率27% (1472/5321)
回答No.2
関数内でsumをどのように使用しているかを考える。 同様にvcをどのようにしようかしているか考える。 >int vc[5] = {0}; >//vc[5]と配列の両方に0を格納している。(初期化してる。) これは間違い、vc[5]と配列があるのではないしvc[5]が0になるのでは無い。 vc[0]のみ0で初期化しているだけ。 基礎的知識不足です、コーディング以前の問題。
質問者
お礼
ありがとうございます。
質問者
補足
回答ありがとうございます。 すいません。単なる記入ミスです。 でももっと勉強します。ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
C では, 初期化しない自動変数の初期値は不定. 「なぜ」といわれても, 「そういうものだから」としか言いようがない. 初期値に依存しなければ初期化しなくても大丈夫なのも当然.
質問者
お礼
ありがとうございました。 私がお尋ねした理由はその当然の部分を確認するためです。
お礼
とてもわかりやすかったです。 ありがとうございました。