2

我想知道 Delphi 等效于以下运算符。

++i/--i
i++/i--
i+=1/i-=1

我只知道Inc(i)fori++Dec(i)for i--

同样在Inc(i,1)fori+=1Dec(i,1)for的概念下i-=1

但是不知道--iand ++i。是否支持?

我的假设正确吗?如果不是建议必要的。

提前谢谢。

4

3 回答 3

11

Delphi 没有与这些运算符中的任何一个等效的东西。

与+= 类似,inc但它们的不同之处在于 C/C++ 版本评估为一个值。dec-=

在 C 和 C++ 中,您可以编写

x = a[i++];

inc这在 Delphi中根本不可能。所以在德尔福我会把它写成

x = a[i];
inc(i);

目睹了似乎无穷无尽的关于 I 含义的问题,i++ + ++i + ++i++我很高兴这些运算符在 Delphi 中不存在。

更严肃地说,您应该非常谨慎地尝试使用例如内联函数来重现此类运算符。一旦你开始将这些操作符串成复杂的表达式,你将观察到不可预知的行为,因为表达式中的函数求值顺序在 Delphi 中是未定义的。

于 2011-12-05T06:32:15.150 回答
4

你可以使用这样的东西:

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 运算符的各种变体。

于 2011-12-05T06:36:09.730 回答
-2

一个惯用的 delphi 风格是将 C++ 的东西分成单独的语句。

如果最里面的最高先例子表达式是一个预减量,那么等价于在 delphi 的命令块中使其成为第一个命令。

  Line 1.         --i   --> Dec(i);  
  Line 2.      func(i)  --> func(i);
  Line 3.        x-=1;   --> Dec(x);

C 的表现力不能也不应该在别处复制。不要将您的 C++ 习语带入其他语言并尝试在任何其他语言中使用它们。类似于说英语,坚持使用属于粤语的拼音规则。没有人会理解你,你会在黑暗中工作。

于 2011-12-05T17:47:10.900 回答