Grazie,
avevo cercato su internet, ma non avevo trovato niente o avevo impostato male la chiave di ricerca.
conoscevo gli operatori tipo += o *= ma non quello, che se ho capito bene fa la stessa cosa di x != x
Infatti, a confermare le parole di Guglielmo, luso di quella istruzione sarebbe formalmente sbagliato
Trattandosi di operazioni su variabil booleane si dovrebbe usare il not (!) e non lo XOR, che amdrebbe applicato a varibili con più bit
In effetti il c++ dovrebbe prevedere uno specifico warning di tipo
... quanto meno richiede una certa attenzione ... il gioco funziona se la variabile è all'inizio 0 ed allora, ogni volta che si fa il XOR con 1, alterna il suo valore tra 0 ed 1 (0 ^ 1 = 1 e poi 1 ^ 1 = 0), ma, se per caso contenesse un altro valore, l'inversione NON ci sarebbe più.
Usando invece l'operatore logico le cose funzionerebbero anche su sistemi in cui il TRUE è rappresentato con un valore diverso da 1 (es. 0xFF) ... difatti il NOT ( ! ) darebbe comunque FALSE e applicato di nuovo darebbe di nuovo TRUE ... facendo funzionare il tutto