begin i := 55; WriteLn(66 shr 32); WriteLn(i shr 32); end.
Результат: 0 55
То есть с константой ведет себя нормально, а с переменной для второго аргумента берется остаток от деления на 32, и соответственно для 32 получаем сдвиг вправо на 0, для 33 на 1 и т.д. Проверьте у себя. FPC 2.6.2
Последний раз редактировалось SeZuka 31.07.2013 14:46:35, всего редактировалось 1 раз.
В операциях сдвига x86 в операнде количества сдвигов учитываются только 5-ть младших битов. Поэтому 32 ничего никуда не сдвигает. В остальных случаях - результат зависит от состояния этих самых 5-ти бит. Что касается константных выражений, насколько я помню(могу ошибаться), в FPC целые константы - 64-х битные. Потому такие результаты
Последний раз редактировалось Kemet 31.07.2013 14:20:29, всего редактировалось 1 раз.
2 SeZuka просьба попробовать назвать тему в соответствии с п. 2.3 правил форума и возможно надо купить новую клавиатуру (чтобы не дублировались символы вопроса)
Было веселой шуткой? или SeZuka технологичный бот ищущий баги в fpc и подмешивающий рекламу в багрепорты?
Это модератор изменил название темы, на такое, первоначальное название "Баг???" его чем-то не устроило, согласен что не сильно информативное, но не писать же целиком сообщение в названии темы.