以下是来自" C ++ Primer"的示例。这表示signed int
与unsigned int
一起添加时会自动转换为unsigned int
。但我得到的结果似乎是unsigned int
被转换为signed int
。谁能告诉我为什么?
代码:
#include <iostream>
using namespace std;
int main() {
int i = -1;
unsigned int u = 10;
cout << i + u << endl;
return 0;
}
结果:
9
答案 0 :(得分:4)
这是一个非常无趣的例子。如何判断9
是signed
还是unsigned int
(或long
或short
还是......)?它属于所有这些类型的范围。
以下是一个更好的例子:
int i = -12;
unsigned int u = 10;
cout << i + u << endl; // prints 4294967294
或者真的:
static_assert(is_same<decltype(i+u), unsigned int>::value,
"wat");