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
。
为什么int k
的情况没有发生,它打印了-5
?