C言語なら俺に聞け! Part 115
■ このスレッドは過去ログ倉庫に格納されています
0599デフォルトの名無しさん
2005/10/11(火) 15:09:42if ((pStruct != NULL) && (pStruct->param == VALUE)) {
...
}
else {
...
}
なんでも, コンパイラによっては前の判定で偽になっても後の判定を行ってしまうもの
があり, 結果として後の判定で NULL ポインタアクセスとなってしまうのだそうです.
なので, この場合は初めに NULL チェックだけの if を書き, メンバの判定に if を
もう一つネストして書かなければだめだとのことですが, それだとひどく冗長なコード
のような気がしますし, else の内容を 2 度書かなければならなくなってしまいます.
私は今まで (といっても 2, 3 年ですが) この書き方で問題になったことがないの
ですが, 実は論理式の評価の順番は規定されてはおらず, 今までたまたま助かって
いただけなのでしょうか.
■ このスレッドは過去ログ倉庫に格納されています