float - unsigned long c
¿Cómo puedo arreglar el código de error C4146 "operador unario menos aplicado a unsigned type.result aún sin firmar"? (2)
-2,147,483,648
se interpreta como la negación de 2147483648
. 2147483648
supera el número entero positivo máximo en su sistema y se considera como sin firmar.
En cambio, prueba
-2147483647 - 1
El valor mínimo del tipo de datos int
es -2,147,483,648.
Entonces, escribí
int val = -2147483648;
Pero, tiene un error:
unary minus operator applied to unsigned type.result still unsigned
¿Cómo puedo arreglarlo?
2147483648
está fuera de rango en su plataforma.
O usa un tipo con más precisión para representar la constante
int val = -2147483648L;
// or
int val = -2147483648LL;
(dependiendo de qué tipo tenga más precisión que int
en su plataforma).
O recurrir al buen viejo - 1
truco
int val = -2147483647 - 1;