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
的情況下不會發生這種情況?