Wie Hobbs in seiner Antwort sagte, Abschnitt 6.5.3.3.5 des C-Standard besagt, dass !0
zu 1
ausgewertet wird.
Zusätzlich kann dieses Verhalten verwendet werden, um eine ganze Zahl auf einen booleschen Wert (d. h. entweder 0
oder 1
) mit dem Ausdruck !!x
zu normieren.
x
= 0
, !!x
= !!0
= !1
= 0
. x
! = 0
, !x
= 0
, also !!x
= !0
= 1
.