Почему в результате неявного преобразования мы получаем -128?

У нас есть следующий код C ++

#include <iostream>

int main()
{
int  A = 128;
char B = A;
A = B;
std::cout << "B:= " << B << std::endl;
std::cout << "A:= " << A << std::endl;
return 0;
}

Кто-нибудь может мне объяснить, почему в результате мы получаем -128?

0

Решение

Это потому, что в вашей системе char тип имеет диапазон -128 в 127,

128 не вписывается в char в этой системе, поэтому он преобразуется (в зависимости от реализации) в значение -128,

Когда вы назначаете его обратно int переменная, нет проблем с удержанием значения -128так вот что он получает.

Как примечание: в этом случае реализация преобразует значение 128 (char) -128 так как 128 представляется в двоичном виде 10000000что является 8-битным представлением со знаком для -128, Это будет справедливо для большого числа реализаций.

3

Другие решения


По вопросам рекламы ammmcru@yandex.ru