2011-12-05 33 views
2

我想知道Delphi相当于下面的运算符。在delphi中相当于运算符

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

我知道的只是Inc(i)i++Dec(i)i--

也在Inc(i,1)对于i+=1Dec(i,1)对于i-=1的概念下。

但是不知道关于--i++i。它是否支持?

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

Thanx提前。

+6

其实Inc既不是++ i也不是i ++,也不是Inc(i,1)等于i + = 1,因为它不计算为一个值。相同Dec .: –

回答

11

德尔福没有等同于任何这些运营商。

这种情况下,incdec类似于+ =和-=,但它们的不同之处在于C/C++版本评估为一个值。

虽然在C和C++,你可以写

x = a[i++]; 

,这是根本不可能与德尔福inc。因此,在德尔福我将它写成

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

目睹约我来说,我高兴的是,这些运营商不要在Delphi中存在的i++ + ++i + ++i++意义的问题看似源源不绝。

在一个更严重的问题上,你应该非常谨慎地尝试使用例如内联函数重现这样的操作符。一旦开始将这些运算符串入复杂表达式中,您将观察到不可预知的行为,因为表达式中的函数评估顺序在Delphi中是未定义的。

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

+2

您是否仍然使用Modula2作为参考语言,将所有内容写入大写字母? :)只要在Delphi 2007+上添加'inline;'关键字,就可以快速完成任务。 –

+0

@ArnaudBouchez谢谢你的评论,我的眼睛在燃烧;) –

+1

@HeartWare:如果它是正确缩进并带有正确的小写字母,我会给出一个...很抱歉,这样说我没有进入政治.. 。 –

-2

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

如果最里面的最高先例子表达式是预先递减的,那么相当于在delphi中的命令块中创建第一个命令。

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

C的表现力不能也不应该在其他地方复制。不要把你的C++习语变成其他语言,并尝试以任何其他语言来使用它们。这与说英语相似,并坚持使用属于广东话的语音规则。没有人会理解你,你会在黑暗中工作。

+0

我想清除我的疑惑,我不认为没有人可以阻止我这样做。 – Shirish11

+0

关于'独白'需要清除这些疑惑,同时将项目从1项技术移植到另一项。 – Shirish11

相关问题