转换未签名转换为有符号
无符号整数类型可以将对象转换为相应的有符号类型。 但是,此类转换可能会导致数据的误会,如果未签名的对象的值是在范围之外可以可用由已签名的类型,如下面的示例所示:
示例
// conve__pluslang_Converting_Unsigned_to_Signed.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
short i;
unsigned short u = 65533;
cout << (i = u) << "\n";
}
Output
-3
在前面的示例中, u 是必须转换为有符号的计算表达式 (i = u)的 unsigned short 集成对象。 由于其值在 signed short无法正确表达,数据被错误解释如下所示。