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