Я очень новичок в работе с битами и застрял в следующем предупреждении при компиляции:
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
неточными или я неправильно понял что-то фундаментальное?