Código
void upper_case(char *src) { while (*src != '\0') { if (islower(*src)) *src = (*src & ~0x20); src++; } }
No logro entender esta linea del código:
Código
*src = (*src & ~0x20);
Se que el operador ~ invierte cada bit del 0x20 (i.e 32) convirtiéndolo al numero binario -11111 == -31. Supongamos que *src = 'a' al aplicar el operador &
Código
1100001 -0011111 _______ 0000001
El resultado no es lo esperado que seria el binario 1000001 == 65 alguien podría explicarme que pasa aquí o acaso al usar el operador & sobre binarios negativos tiene otro efecto..