【发布时间】:2017-07-01 05:38:39
【问题描述】:
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。
为什么打印-5的int k没有发生这种情况?
【问题讨论】:
标签: c++ unsigned-integer