Il risultato di abs (-2147483648) è -2147483648, non è vero? sembra inaccettabile.Perché il valore assoluto del numero intero negativo massimo -2147483648 è ancora -2147483648?
printf("abs(-2147483648): %d\n", abs(-2147483648));
uscita:
abs(-2147483648): -2147483648
Credo che questo sia un comportamento indefinito. Non ho lo standard C a portata di mano, quindi non posso eseguire il backup. –
Cosa ti aspetti che sia, dato che 'abs (int)' restituisce un 'int'? –
L'ultima bozza di C11 dice (7.21.6.1, circa abs e amici) "Se il risultato non può essere rappresentato, il comportamento non è definito" –