In Delphi, are parameters evaluated in order when passed into a method?

前端 未结 2 1103
南旧
南旧 2020-12-17 15:38

Is the order in which parameters are calculated before a procedure is called defined in Delphi?

IOW, if I have this ugly code (found something like this in a legacy

2条回答
  •  -上瘾入骨i
    2020-12-17 16:17

    The order of parameter evaluation in Delphi is not defined.

    As an interesting demonstration of this, the following program has different output depending on whether you target 32 or 64 bit code:

    program ParameterEvaluationOrder;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    function SideEffect(A: Integer): Integer;
    begin
      Writeln(A);
      Result := A;
    end;
    
    procedure Test(A, B: Integer);
    begin
    end;
    
    begin
      Test(SideEffect(1), SideEffect(2));
      Readln;
    end.
    

提交回复
热议问题