0

C でプログラムをコーディングしているときに、わからない問題が発生しました。ifステートメントで条件が満たされているかどうかを確認していましたが、次の点に違いがあるかどうか疑問に思っていました:

if(ptr != NULL)
or
if(ptr)

どちらも正しいと思いますが、C の世界では 2 番目が多く、Java の世界では 1 番目が多く使用されます。どちらが正しいですか?

4

2 に答える 2

3

C では、0(ゼロ) と評価されるものはすべて「偽」であり、ゼロ以外のものはすべて「真」です。

したがって、ptrisの場合NULL、これら 2 つのif条件は最終的に同じように機能します。

if (ptr != NULL)= if (0 != 0)=if (0)

と:

if (ptr)=if (0)

人々はどちらが優れているかを議論しますが、コードでは両方を見ることができます。前者の方がより明確であるため、より明確です。2番目は短いです。どちらも技術的に正しく、同等です。

于 2013-04-29T16:16:17.827 に答える
1

どちらも正しく、同等です。

ポインターのみが評価されるfalse場合は、ポインターがそうである場合NULLtrueそうでない場合に評価されます。

于 2013-04-29T16:09:05.383 に答える