Преобразование из неподписанного в подписанное не определено?
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.