Convertire senza segno a firmato
Gli oggetti di tipi integrali unsigned possono essere convertiti nei tipi signed corrispondenti.Tuttavia, tale conversione può causare l'errata interpretazione dei dati se il valore dell'oggetto senza segno è compreso nell'intervallo rappresentabile dal tipo con segno, come illustrato nell'esempio seguente:
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 viene unsigned short oggetto integrale che deve essere convertito in una quantità con segno per valutare l'espressione (i = u).Poiché il valore non può essere correttamente rappresentato in un oggetto signed short, i dati vengono interpretati erroneamente come illustrato.