У нас есть следующий код 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?
Это потому, что в вашей системе char
тип имеет диапазон -128
в 127
,
128
не вписывается в char
в этой системе, поэтому он преобразуется (в зависимости от реализации) в значение -128
,
Когда вы назначаете его обратно int
переменная, нет проблем с удержанием значения -128
так вот что он получает.
Как примечание: в этом случае реализация преобразует значение 128
(char) -128
так как 128
представляется в двоичном виде 10000000
что является 8-битным представлением со знаком для -128
, Это будет справедливо для большого числа реализаций.