Я пытаюсь установить самый значительный бит в длинном длинном без знака, x. Для этого я использую эту строку кода:установить самый старший бит в C
x |= 1<<((sizeof(x)*8)-1);
Я подумал, что это должно работать, потому что SizeOf дает размер в байтах, поэтому я умноженное на 8 и вычесть один, чтобы установить окончательный бит. Всякий раз, когда я это делаю, компилятор имеет это предупреждение: «предупреждение: количество сдвигов влево> = ширина типа»
Я не понимаю, почему эта ошибка возникает.
Не используйте магические числа. Байт/'char' в C может иметь более 8 бит. Замените '8' на' CHAR_BIT'. – Olaf