Esiste, però, un caso in cui il risultato può sembrare incongruente: ad esempio, la valutazione di questa espressione, non è sempre falsa, come si può credere:
codice:
int a;
if (a != !!a) {
   ...  // Queste istruzioni possono essere eseguite
}
Nel caso in cui la variabile a sia diversa da 0 e da 1, le istruzioni verranno eseguite.
Il perchè è semplice: se la variabile a vale, ad esempio, 15 il test viene valutato in questo modo:
codice:
if (15 != 1) {
   ...  // e viene eseguito.
}
Questo accade perchè l'operatore ! agisce in questo modo: il primo rende FALSO il valore 15 (quindi lo mette a 0), poi il secondo lo rimette a vero, ma questa volta diventa 1...

Quando A è diverso da NOT( NOT(A) )

Ciao.