0

次のようなことを行うと、どのくらい安全になりますか。

if (flag_val != NULL && strcmp (val, flag_val) == 0) {
   // something
} else {
   // something else
}

flag_valある場合とそうでない場合があることを知ってNULLいます。

最初にチェックすることはわかっていますがflag_val != NULL、false と評価された場合、2 番目の条件をチェックすべきではありませんよね?

ありがとう

4

2 に答える 2

8

flag_val が NULL の場合、&& 演算子は短絡します。flag_val が他のスレッドによって変更できない限り、これは安全なコードです。

于 2010-11-10T02:45:18.930 に答える
1

flag_val != NULLが false と評価された場合、つまりflag_valisの場合NULL、短絡ロジックは残りの式の評価を停止します (条件全体が true になることはできないため)。あなたがしていることは問題ありません。

于 2010-11-10T02:45:27.840 に答える