非常简单的问题,但我在谷歌找不到答案
在delphi中,有没有办法缩短这种代码:
MyVar := MyVar + X;
就像在C ++中一样,我会做MyVar + = X;。鉴于它必须有多么微不足道和有用,但我找不到任何选择......
感谢您的帮助
答案 0 :(得分:19)
您在寻找“fast”或短运营商吗?如建议的那样, Inc 和 Dec 在函数和长度上最接近 + = 和 - = ,但是在某些情况下,它们也更快。如果您已启用范围检查,那么它们会更快,然后调用 x:= x + 1;
这是打开范围检查的反汇编,其中所有变量都是 Inc(MyVar,x)
// Inc(MyVar, x);
add bl, x
这里是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
即使没有范围检查失败,您也可以看到差异。
但是,如果您打开溢出检查,Inc仍然需要支付此费用。
答案 1 :(得分:6)
您可以使用Inc命令,如下所示:
Inc(MyVar, X);
答案 2 :(得分:5)
不,你没有。但你可以使用
procedure Inc(var X [ ; N: longint ] );
Inc(avar)
Inc(avar, 10)
将变量递增N或
procedure Dec(var X [ ; N: longint ] );
Dec(avar);
Dec(avar, 10);
将变量递减N.
答案 3 :(得分:2)
Inc(MyVar, X);
不会缩短,我担心。
答案 4 :(得分:1)
'Do and Assign'等+=
和-=
等运算符不属于Delphi 规范语言 - 你需要再增加另一个,可能更长,方式。
答案 5 :(得分:1)
在delphi中,有没有办法缩短这种代码:
你想缩短什么? x = x + 1和x + = 1在支持它们的语言中生成相同的代码(对于标准类型)。由于Delphi没有运算符重载,因此x:= x + 1是整数或浮点运算。代码语法就是:语法。一个不比另一个“更快”。