Всегда ли элементы в инструкции с оператором И проверяются в заданном порядке?

Я хотел бы знать, может ли следующий код когда-либо завершиться ошибкой с нарушением прав доступа или он безопасен. Является ли первый Член оператора с оператором AND всегда проверяется как первый или может быть (в результате какой-то оптимизации компилятора или чего-то еще) второй проверяется как первый?

var
  Item: TSomething;

procedure DoSomething;
begin
  if Assigned(Item) and (Item.SomeProperty) then
    DoSomethingElse;
end;

Является ли приведенный выше код определенно безопасным?

Спасибо!

11
задан Martin Reiner 15 March 2012 в 12:32
поделиться