如何修复错误代码C4146“unary减运算符应用于unsigned type.result仍未签名”?

数据类型int的最小值为-2,147,483,648。

所以,我输入了

 int val = -2147483648; 

但是,它有一个错误:

 unary minus operator applied to unsigned type.result still unsigned 

我该如何解决?

2147483648超出了您平台的int范围。

使用具有更高精度的类型来表示常量

 int val = -2147483648L; // or int val = -2147483648LL; 

(取决于哪种类型的精度比平台上的int更高)。

或者诉诸好老- 1

 int val = -2147483647 - 1; 

-2,147,483,648被解释为2147483648否定。 2147483648超过系统上的最大正整数,并被视为无符号。

相反,试试吧

 -2147483647 - 1