Conversione da valori senza segno a valori con segno
Gli oggetti dei tipi integrali senza segno possono essere convertiti nei tipi con segno corrispondenti. Tuttavia, tale conversione può comportare l'errata interpretazione dei dati se il valore dell'oggetto senza segno è esterno all'intervallo rappresentabile dal tipo con segno, come mostrato nel seguente esempio:
Esempio
// 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
Nell'esempio precedente u è un oggetto integrale unsigned short che deve essere convertito in una quantità con segno per valutare l'espressione (i = u). Poiché il relativo valore non può essere rappresentato correttamente in un oggetto signed short, i dati vengono interpretati erroneamente come illustrato.