El resultado de abs (-2147483648) es -2147483648, ¿no es así? parece inaceptable.¿Por qué el valor absoluto del entero negativo máximo -2147483648 es todavía -2147483648?
printf("abs(-2147483648): %d\n", abs(-2147483648));
de salida:
abs(-2147483648): -2147483648
Creo que este es un comportamiento indefinido. No tengo el estándar C a mano, así que no puedo respaldarlo. –
¿Qué esperas que sea, dado que 'abs (int)' devuelve un 'int'? –
El último borrador de C11 dice (7.21.6.1, sobre abs y amigos) "Si el resultado no se puede representar, el comportamiento no está definido" –