Convertendo não assinado em assinado
Os objetos de tipos integrais sem sinal podem ser convertidos nos tipos com sinal correspondentes. No entanto, essa conversão poderá causar a interpretação errônea dos dados se o valor do objeto sem sinal estiver fora do intervalo representável pelo tipo com sinal, como é demonstrado no seguinte exemplo:
Exemplo
// 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";
}
Saída
-3
No exemplo acima, u é um objeto integral unsigned short que deve ser convertido em uma quantidade com sinal para avaliar a expressão (i = u). Como seu valor não pode ser representado adequadamente em um signed short, os dados são interpretados incorretamente, como mostrado.