📦 変数・型・演算子
実行するたびに結果が変わります。自分のPCでは0で正しく動くのに、別の環境や最適化を変えた途端に壊れます。gcc: warning: 'sum' is used uninitialized [-Wuninitialized](-Wall かつ最適化ONで検出されやすい)。
関数内のローカル変数は自動的に0にはならず、そのメモリにたまたま残っていた値から始まります。「たまたま0だったから動いた」だけの成功は再現しません。
宣言と同時に初期値を書きます(int sum = 0; char buf[64] = {0};)。宣言を使う直前まで引きつけて書くと、初期化忘れそのものが減ります。-Wall -Wextra を常用します。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。