標準のcコンパイラ(C89)を使用して、以下の2つのifステートメントが同じように評価されるかどうかを思い出そうとしています。
スニペット1:
boolean function(formattype* format)
{
if(format != null && (*format == format1 || *format == format2 || *format == format3) )
return true;
else
return false;
}
スニペット2と同じ方法で評価されます。
boolean function(formattype* format)
{
if(format != null && (*format == format1 || format2 || format3) )
return true;
else
return false;
}
2番目の比較の評価にのみ関心があり、説明のために関数を追加しただけです。いくつかの同様の方法を使用して、すべてを入力せずに||'d引数のそれぞれを使用して==を評価したことを覚えているようですが、詳細を思い出せません。
編集:おそらく、この関数は、説明に役立つよりも物事を混乱させました。
私は以下を評価しようとしています
if(format != null && (*format == format1 || *format == format2 || *format == format3) )
1つ目は、nullポインターの逆参照を防ぐための単なるチェックなので、無視してください。次の3つは、参照解除されたフォーマットポインタが3つの異なるフォーマットタイプのいずれかに等しいかどうかを確認しています(知っておく必要がある場合は列挙型になります)。
マクロは使いたくないので、比較を簡単にしたい。それは不可能かもしれません、私は単に同様の操作を実行したという漠然とした記憶を持っています。
2番目の例に沿ったものだと思いました。
if(format != null && (*format == format1 || format2 || format3) )