[英]Addition between `signed int` and `unsigned int`
下面是从“C ++引物”,其指示一个例子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
那是一个很有趣的例子。 您如何判断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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.