¿Cuál es la idea detrás de ^ = 32, que convierte letras minúsculas en mayúsculas y viceversa?
Estaba resolviendo algún problema en las fuerzas de código. Normalmente, primero verifico si el carácter es una letra en inglés superior o inferior y luego resto o agrego32
para convertirlo a la letra correspondiente. Pero encontré a alguien haciendo^= 32
para hacer lo mismo. Aquí está
char foo = 'a';
foo ^= 32;
char bar = 'A';
bar ^= 32;
cout << foo << ' ' << bar << '\n'; // foo is A, and bar is a
He buscado una explicación para esto y no lo descubrí. Entonces, ¿por qué esto funciona?