int main() {
unsigned i = 5;
int j = -10;
double d = i + j;
long l = i + j;
int k = i + j;
std::cout << d << "\n"; //4.29497e+09
std::cout << l << "\n"; //4294967291
std::cout << k << "\n"; //-5
std::cout << i + j << "\n"; //4294967291
}
我相信signed int
在做算术运算符之前被提升为unsigned
。
虽然-10
转换为无符号unsigned integer underflow
(是这个正确的术语??)将发生和添加后,它打印4294967291
。在C++中无符号整型促销
为什么在int k
打印-5
的情况下不会发生这种情况?