Приведение отрицательного целого числа к большему беззнаковому целому числуC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Приведение отрицательного целого числа к большему беззнаковому целому числу

Сообщение Anonymous »

Я столкнулся с кодом, выполняющим следующее преобразование:
static_cast(-1)
Насколько я могу судить, стандарт C++ определяет, что происходит при преобразовании целочисленного значения со знаком в целочисленный тип без знака (см.: Что произойдет, если я присвою отрицательное значение к беззнаковой переменной?).
В приведенном выше коде меня беспокоит то, что типы источника и назначения могут иметь разные размеры, и влияет ли это на результат. Будет ли компилятор увеличивать тип исходного значения перед приведением? Будет ли вместо этого он преобразован к беззнаковому целому числу того же размера, а затем увеличит его? Или, возможно, что-то еще?
Чтобы уточнить код,
int nInt = -1;
long nLong = -1; // assume sizeof(long) > sizeof(int)

unsigned long res1 = static_cast(nInt)
unsigned long res2 = static_cast(nLong);

assert(res1 == res2); // ???

В принципе, стоит ли мне беспокоиться о написании кода типа
static_cast(-1L)

над
static_cast(-1)


Подробнее здесь: https://stackoverflow.com/questions/217 ... ed-integer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»