Преобразование из неподписанного в подписанное не определено?

void fun(){
    signed int a=-5;
    unsigned int b=-5;
    printf("the value of b is %u\n",b);
    if(a==b)
         printf("same\n");
    else
         printf("diff");
}

Это печать:

4294967291

такой же

Во 2-й строке значение со знаком преобразуется в значение без знака. Таким образом, b имеет значение UINTMAX + 1 - 5 = 4294967291.

У меня вопрос, что происходит в операции сравнения.

1) Снова преобразуется в без знака и сравнивается с б?

2) Будет ли b (т. Е. Без знака) когда-либо приведено к значению со знаком и сопоставлено автоматически?

3) Преобразование из неподписанного в подписанное не определено из-за переполнения int?

Я читал другие посты на эту тему. Я просто хочу разъяснений по вопросам 2 и 3.

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

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