[これが存在しないのは奇妙に思われるので、重複している場合は事前にお詫びします]
Cで論理的同等性をテストしたい。言い換えると、2つの値が論理式に関連付けられた通常の方法で変換された場合、2つの値が等しくなるかどうかを知りたい。
C99では、
(bool)a == (bool)b
私が欲しいものを与えます。あれは正しいですか?従来のCでこれを書く通常の方法は何ですか?
通常、次のように表示されます。
if ((a == 0) == (b == 0))
または
if (!!a == !!b)
a が非ゼロの場合は 1 に評価され、それ!!a
以外の場合は 0 に評価されます。
お役に立てれば!
C では、ゼロは false です。任意の値を同等のブール値に変換する場合、標準的な方法 (ほとんど必要がないことを除いて) は、 の!!
ように式の前に を付け!!a
ます。あなたの式の場合、次の
!!a == !!b
ように簡略化できます
!a == !b
C99 より前の C では、「bool にキャスト」する伝統的で慣用的な方法は with!!
です。
(bool)
伝統的なcにはありません。True/False はint
s を使用して処理されます。ブール値が等しいかどうかを確認できます
a ? b : !b