Поделиться через


Преобразование чисел без знака в числа со знаком

Объекты целочисленных типов без знака можно преобразовывать в соответствующие типы со знаком. Однако такое преобразование может приводить к неправильной интерпретации данных, если значение объекта без знака находится вне диапазона, представимого типом со знаком, как показано в следующем примере.

Пример

// 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";
}

Вывод

-3

В приведенном выше примере переменная u является целочисленным объектом типа unsigned short, который необходимо преобразовать в количественное значение со знаком, чтобы вычислить выражение (i = u). Поскольку его значение невозможно правильно представить в виде signed short, данные интерпретируются неверно.

См. также

Ссылки

Преобразования целочисленных типов