在Delphi中,是传入方法时按顺序评估的参数?
发布时间:2020-12-15 06:10:27 所属栏目:大数据 来源:网络整理
导读:在Delphi中定义过程之前,是否计算参数的顺序? IOW,如果我有这个丑陋的代码(在遗留应用程序中找到这样的东西)… function A(var err: integer): integer;begin err := 42; Result := 17;end;Test(A(err),err); …是测试保证接收参数(17,42),还是可以(17,未定
在Delphi中定义过程之前,是否计算参数的顺序?
IOW,如果我有这个丑陋的代码(在遗留应用程序中找到这样的东西)… function A(var err: integer): integer; begin err := 42; Result := 17; end; Test(A(err),err); …是测试保证接收参数(17,42),还是可以(17,未定义)? 编辑: 虽然David的例子返回与32位和64位编译器不同的结果,但幸运的是,幸运的是不会影响我的遗留代码,因为Test(A(err),err)只在寄存器中存储一个’err’地址在调用A(err)或之后,编译器是否执行此操作并不重要. 解决方法
Delphi中参数评估的顺序没有定义.
作为一个有趣的演示,以下程序有不同的输出取决于您是目标32或64位代码: 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- VB讲读取的UTF-8XML网页转换为unicode编码
- 一种颗粒度很小的 Laravel 路由文件划分方式
- Perl不重复的文件行输出
- LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR的区分与
- 深入解析PHP的Laravel框架中的event事件操作
- perl fork()&exec()
- Requested bean is currently in creation: Is there an un
- golang1.1 path包bug
- delphi – Gethomepath不能在iOS 5/OSxLion上运行
- Inno Setup入门(十六)——Inno Setup类参考(2)