Unaire !
logique opérateur de négation, appliquée à n'importe quel scalaire, les rendements de l' int
valeur 0
si son opérande est non nul, 1
si l'opérande est égal à zéro. Citant le standard:
L'expression !E
est équivalent à (0==E)
.
En appliquant !
deux fois pour la même valeur scalaire donne un résultat qui est vrai si la valeur est true, false si la valeur est false -- mais le résultat est normalisé 0
ou 1
.
Dans la plupart des cas, ce n'est pas nécessaire, puisque toute valeur scalaire peut être utilisé directement comme une condition. Mais dans certains cas, vous avez réellement besoin d'un 0
ou 1
de la valeur.
En C99 ou plus tard, le casting de l'expression d' _Bool
(ou bool
si vous avez #include <stdboo.h>
se comporte de la même façon et pourrait être considéré comme plus claire. Mais (a) le résultat est de type _Bool
plutôt que d' int
, et (b) si vous utilisez un pré-compilateur C99 qui ne prend pas en charge _Bool
et que vous avez défini votre propre bool
type, il ne' se comportent de la même manière que le C99 est _Bool
.