数据类型int
的最小值为-2,147,483,648。
所以,我输入了
int val = -2147483648;
但是,它有一个错误:
unary minus operator applied to unsigned type.result still unsigned
我该如何解决?
答案 0 :(得分:8)
2147483648
超出了您平台上的int
范围。
使用具有更高精度的类型来表示常量
int val = -2147483648L;
// or
int val = -2147483648LL;
(取决于哪种类型的精度高于平台上的int
)。
或者采用好的旧- 1
技巧
int val = -2147483647 - 1;
答案 1 :(得分:4)
-2,147,483,648
被解释为2147483648
的否定。 2147483648
超过系统上的最大正整数,并被视为无符号。
相反,请尝试
-2147483647 - 1