что такое char i = 0x80 и почему переполнение не произошло при сдвиге битов

Вот программа

#include <stdio.h>
main()
{ unsigned char i=0x80;
printf("i=%d",i<<1);
}

На выходе она дает 256. Я не понимаю, что

unsigned char i=0x80; <-- i is not int it is char so what will it store?

мне известно о битовых и шестнадцатеричных вещах. Как сохраняется значение i и как оно изменяется на 256?

ОБНОВЛЕНИЕ

Почему не произошло переполнения, когда произошла операция сдвига битов?

9
задан Registered User 18 June 2011 в 19:12
поделиться