很简单的问题,但我在谷歌找不到答案
在delphi中,有没有办法缩短这种代码:
MyVar := MyVar + X;
Run Code Online (Sandbox Code Playgroud)
就像在C++中一样,我会做MyVar + = X;.鉴于它必须有多么微不足道和有用,但我无法在任何地方找到任何选择......
谢谢你的帮助
Jim*_*eth 19
您在寻找"快速"或短期运营商吗? 如所建议的那样,Inc和Dec在函数和长度上最接近+ =和- =,但在某些情况下它们也更快.如果你打开了范围检查,那么它们比调用x:= x + 1更快;
这是打开范围检查的反汇编,其中所有变量都是Inc(MyVar,x)的字节($ ff的最大值)
// Inc(MyVar, x);
add bl, x
Run Code Online (Sandbox Code Playgroud)
这里是x:= x + 1;
// x := x + 1;
movzx eax,bl
movzx edx, x
add eax,edx
cmp eax,$000000ff
jbe success
call @BoundErr
success:
mov ebx,eax
Run Code Online (Sandbox Code Playgroud)
即使没有范围检查失败,您也可以看到差异.
但是,如果启用" 溢出"检查,则Inc仍然会受到此开销的影响.
不,你没有.但你可以使用
procedure Inc(var X [ ; N: longint ] );
Inc(avar)
Inc(avar, 10)
Run Code Online (Sandbox Code Playgroud)
将变量增加N,或
procedure Dec(var X [ ; N: longint ] );
Dec(avar);
Dec(avar, 10);
Run Code Online (Sandbox Code Playgroud)
通过N减少变量.