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;