我想知道 Delphi 等效于以下运算符。
++i/--i
i++/i--
i+=1/i-=1
我只知道Inc(i)
fori++
和Dec(i)
for i--
。
同样在Inc(i,1)
fori+=1
和Dec(i,1)
for的概念下i-=1
。
但是不知道--i
and ++i
。是否支持?
我的假设正确吗?如果不是建议必要的。
提前谢谢。
我想知道 Delphi 等效于以下运算符。
++i/--i
i++/i--
i+=1/i-=1
我只知道Inc(i)
fori++
和Dec(i)
for i--
。
同样在Inc(i,1)
fori+=1
和Dec(i,1)
for的概念下i-=1
。
但是不知道--i
and ++i
。是否支持?
我的假设正确吗?如果不是建议必要的。
提前谢谢。
Delphi 没有与这些运算符中的任何一个等效的东西。
与+= 类似,inc
但它们的不同之处在于 C/C++ 版本评估为一个值。dec
-=
在 C 和 C++ 中,您可以编写
x = a[i++];
inc
这在 Delphi中根本不可能。所以在德尔福我会把它写成
x = a[i];
inc(i);
目睹了似乎无穷无尽的关于 I 含义的问题,i++ + ++i + ++i++
我很高兴这些运算符在 Delphi 中不存在。
更严肃地说,您应该非常谨慎地尝试使用例如内联函数来重现此类运算符。一旦你开始将这些操作符串成复杂的表达式,你将观察到不可预知的行为,因为表达式中的函数求值顺序在 Delphi 中是未定义的。
你可以使用这样的东西:
FUNCTION PreInc(VAR I : INTEGER) : INTEGER; INLINE; // ++I
BEGIN
INC(I);
Result:=I
END;
和
FUNCTION PostInc(VAR I : INTEGER) : INTEGER; INLINE; // I++
BEGIN
Result:=I;
INC(I)
END;
并且通过各种重载,您可以实现这些 C 运算符的各种变体。
一个惯用的 delphi 风格是将 C++ 的东西分成单独的语句。
如果最里面的最高先例子表达式是一个预减量,那么等价于在 delphi 的命令块中使其成为第一个命令。
Line 1. --i --> Dec(i);
Line 2. func(i) --> func(i);
Line 3. x-=1; --> Dec(x);
C 的表现力不能也不应该在别处复制。不要将您的 C++ 习语带入其他语言并尝试在任何其他语言中使用它们。类似于说英语,坚持使用属于粤语的拼音规则。没有人会理解你,你会在黑暗中工作。