foo() が副作用を生成し、整数を返す次の C コードがあるとします。
if(bar) {
foo();
return 0;
}
さて、おそらく読者の費用負担で、コードをコンパクトにするのが本当に好きで、これを次のように変更するとします。
if (bar)
return foo() && 0;
これら 2 つのコードが同じ動作を生成することを確認できますか? または、コンパイラの最適化などの可能性があるために foo() の呼び出しが実行されず、目的の副作用が発生しないリスクがありますか?
注: これはどちらのコードが優れているかという問題ではなく、2 つの部分が実際にすべてのケースで同じ動作をするかどうかという問題です。大多数 (そして私) は、前者のコードを使用することに同意できると思います。