tipos long float datos data c integer precision

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;