Вы ищите неправильные результаты, согласно как компилятору Delphi, так и калькулятору Windows 7 в режиме программирования.(Ответ, который вы хотите получить, на самом деле 2 shl 32
, кстати.)
Вам необходимо разыграть обе стороны от shl
до Int64
:
const
n = Int64(2) shl Int64(33);
.1009 *
N = 17179869184;
Текущая документация (для XE2, но также относится и к более ранним версиям Delphi) отмечает это в Fundamental Integer Types
.Тем не менее, на этой странице упоминается только, что один из операндов должен быть приведен как Int64
;Мой тест показывает, что оба операнда должны быть приведены к типу в приведенном выше объявлении const
- при приведении к типу только одного (независимо от того, какой из них) также получилось `n = 4; '.