转换未签名转换为有符号

无符号整数类型可以将对象转换为相应的有符号类型。 但是,此类转换可能会导致数据的误会,如果未签名的对象的值是在范围之外可以可用由已签名的类型,如下面的示例所示:

示例

// 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无法正确表达,数据被错误解释如下所示。

请参见

参考

集成转换