Тип преобразования - неподписанный в подписанный int / char

Я попытался выполнить следующую программу:

#include 

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;
}

Для этой программы я получаю вывод:

Чар является DIFF !!! INT то же самое!

Почему мы получаем разные результаты для обоих?

Должен ли вывод быть таким, как показано ниже?

Чар это то же самое! INT то же самое! A

ссылка на кодовую панель.

Ответы на вопрос(5)

Ваш ответ на вопрос