+ 1
Объясните почему?
#include <iostream> using namespace std; int main() { char a = 0xF0; cout << hex << (int)a; return 0; } Ожидаю получить f0 или 000000f0, а получаю fffffff0. В чем подвох?
2 odpowiedzi
+ 2
Старший бит - знаковый. Если он равен 1, то значение int считается отрицательным. А отрицательное значение размещается в памяти в дополнительном коде - таком, что все старшие биты равны 1. И при преобразовании из символа в int знаковый разряд распространяется на все старшие биты полученного четырёхбайтового значения.
0
Спасибо! Задача решена)