A conversão de não assinado para assinado é indefinida?
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");
}
Está imprimindo:
4294967291
mesm
Na segunda linha, o valor assinado é convertido em valor não assinado. Então b tem o valor UINTMAX + 1 - 5 = 4294967291.
inha pergunta é o que está acontecendo na operação de comparaçã
1) A é novamente convertido em não assinado e comparado com b?
2) B (ou seja, não assinado) será convertido para o valor assinado e comparado automaticament
3) A conversão de não assinado em assinado é indefinida devido ao estouro de in
Li outras postagens sobre o tópico. Eu só quero esclarecimentos sobre as perguntas 2 e 3.