如何修复错误代码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