掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
「変数が初期化されていない可能性」警告の理由がわからない (ID:48335)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
人間がコードをたどってみれば確かに、cが初期化されるかその前に抜けるかのどちらかであるとわかりますが こういったケースも含めて、初期化されるかどうか判定するアルゴリズムを作るのは大変困難です。 (ちなみに「プログラムの停止性問題」と言って、どんなコードも確実に判定できる万能アルゴリズムは存在し得ないと数学的に証明されています) もちろん頑張ればこういうケースも考慮に入れてアルゴリズムを改良することも可能でしょうが コンパイラのお仕事はあくまでコードをコンパイルすること。 未初期化変数の検出といったことはそのついでにやってくれる、いわばサービスなので そこを完璧にするために労力を注ぎ込むのは本末転倒だ……ということで納得してはどうでしょうか。 (実際、本当に初期化されないかどうか確実には言えないので 「可能性があります」という言い方になってますよね) 警告が出るのがどうしても気持ち悪ければ、例えば今回のケースなら c := 1; if b <> 1 then Exit; と、間違いなく初期化されていると判定できるようにコードを書き換えるというのもありではないでしょうか。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.