当我运行以下代码时:
int main() {
unsigned a = 5;
std::cout << -a << std::endl;
int b = -a;
std::cout << b << std::endl;
return 0;
}
I get this:
4294967291
-5
看起来它可行,我可以把一个unsigned
取反并赋值给一个int
,但这真的总是OK吗?为什么?
当我尝试类似的情况时:
int c = 1;
int d = 3;
double x = c/d;
std::cout << x << std::endl;
我得到了0
(和预期的一样)。
PS:也许有重复,但我没找到。最接近的可能是这个。