LINUX.ORG.RU

gcc глючит что -ли ?


0

0

Господа! а почему

{ int bits = 32; 0xffffffff << 32; и 0xffffffff << bits; }

дают разные значения? в одном случае - 0 а в другом 0xffffffff

НЕ понятно!

anonymous

1) данный фрагмент вообще не компилируется ("и", очевидно, мешает). 2) даже бы если "и" и отсутствовало, этот фрагмент ничего не вычисляет.

anonymous
()

По стандарту С99 сдвиг на 32 бита дает неопределенный результат. Так что все в соответствии со стандартом.

anonymous
()
Ответ на: комментарий от anonymous

# The result of E1 << E2 is E1 left║╘shifted E2 bit positions; vacated bits are filled with zeros. If E1 has an unsigned type, the value of the result is E1 ║© 2 E2 ,reduced modulo one more than the maximum value representable in the result type.

то есть если Е1 без знака, то все должно быть определено. Попробуй 0xffffffffu << bits

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.