Conversão de tipo - não assinado para int / char assinado
Eu tentei executar o programa abaixo:
#include <stdio.h>
int main() {
signed char a = -5;
unsigned char b = -5;
int c = -5;
unsigned int d = -5;
if (a == b)
printf("\r\n char is SAME!!!");
else
printf("\r\n char is DIFF!!!");
if (c == d)
printf("\r\n int is SAME!!!");
else
printf("\r\n int is DIFF!!!");
return 0;
}
Para este programa, estou recebendo a saída:
char é DIFF !!! int é o mesmo !!!
Por que estamos obtendo saídas diferentes para ambos?
A saída deve ser como abaixo?
char é o mesmo !!! int é o mesmo !!!