-8

このチェックが高速コードパスの関数内に存在する場合、NULL のポインターをチェックする最も効率的な方法は何ですか?

4

1 に答える 1

1

同じ効率を期待するのが合理的

if (!p)
if (p == NULL)
if (p == 0)
if (NULL == p)  // Jedi comparison
if (0 == p)     // Jedi comparison

賢明なコンパイラで同じコードにコンパイルします。クレジット: @Will.

ジェダイの比較は、意図したとおりにキャッチ=され==ます (クレジット: @Sanyam Goel)
私や他の人は、通常のif(p == ...)方が読みやすいと感じています。(クレジット: @H2CO3)
私の本では、メンテナンスは開発に勝ります。if (p == NULL)私は、何がテストされているかを最も明確に表現しているため、私はその理由を好む傾向があります。


質問は非常に基本的なものですが、完全な回答に値すると思います。しかし、賞賛は上記の素晴らしい議論に行きます. おそらくほとんどのプログラマーは、ある時点でこの質問について熟考します。

于 2013-08-03T13:13:49.747 に答える