Я очень новичок в работе с битами и застрял в следующем предупреждении при компиляции:
7: warning: left shift count >= width of type
Моя строка 7 выглядит так
unsigned long int x = 1 << 32;
Это имело бы смысл, если бы размер long
в моей системе составлял 32 бита.Тем не менее, sizeof(long)
возвращает 8
, а CHAR_BIT
определяется как 8
, предполагая, что long должен быть 8x8 = 64-битного.
Чего мне здесь не хватает?sizeof
и CHAR_BIT
неточны или я неправильно понял что-то фундаментальное?