Или нет. int 32-битный. long также 32-битный. Даже для сдвига на 31 бит достаточно 1U<<31, для меньших можно и без квалификаторов. L пользы не принесет.
--------------------
На любой вопрос даю любой ответ "Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Или нет. int 32-битный. long также 32-битный. Даже для сдвига на 31 бит достаточно 1U<<31, для меньших можно и без квалификаторов. L пользы не принесет.
А почему L пользы не принесет, а U - принесет? Какая между ними разница при 32-х разрядах?
L пользы не принесет потому что 1 что с ним, что без него 32-битная знаковая. А U дает unsigned 1, нет предупреждения "операция приводит к смене знака".
--------------------
На любой вопрос даю любой ответ "Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)