Como a atribuição de int para char funciona em C?
O que acontece quando você atribui um int a um char em C? Será que ele apenas ignora os bits extras à esquerda?
Exemplo (4 bytes int):
unsigned char c = 0;
unsigned int i = 500;
c = i; // c is 244
c = i << 24 >> 24; //c is 244
i = i << 24 >> 24; //i is 244
Em binário,500
é111110100
e244
é11110100
.