我想知道Delphi相当于下面的运算符。在delphi中相当于运算符
++i/--i
i++/i--
i+=1/i-=1
我知道的只是Inc(i)
为i++
和Dec(i)
为i--
。
也在Inc(i,1)
对于i+=1
和Dec(i,1)
对于i-=1
的概念下。
但是不知道关于--i
和++i
。它是否支持?
我的假设是否正确?如果不是建议必要的。
Thanx提前。
我想知道Delphi相当于下面的运算符。在delphi中相当于运算符
++i/--i
i++/i--
i+=1/i-=1
我知道的只是Inc(i)
为i++
和Dec(i)
为i--
。
也在Inc(i,1)
对于i+=1
和Dec(i,1)
对于i-=1
的概念下。
但是不知道关于--i
和++i
。它是否支持?
我的假设是否正确?如果不是建议必要的。
Thanx提前。
德尔福没有等同于任何这些运营商。
这种情况下,inc
和dec
类似于+ =和-=
,但它们的不同之处在于C/C++版本评估为一个值。
虽然在C和C++,你可以写
x = a[i++];
,这是根本不可能与德尔福inc
。因此,在德尔福我将它写成
x = a[i];
inc(i);
目睹约我来说,我高兴的是,这些运营商不要在Delphi中存在的i++ + ++i + ++i++
意义的问题看似源源不绝。
在一个更严重的问题上,你应该非常谨慎地尝试使用例如内联函数重现这样的操作符。一旦开始将这些运算符串入复杂表达式中,您将观察到不可预知的行为,因为表达式中的函数评估顺序在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运算符的各种变化。
您是否仍然使用Modula2作为参考语言,将所有内容写入大写字母? :)只要在Delphi 2007+上添加'inline;'关键字,就可以快速完成任务。 –
@ArnaudBouchez谢谢你的评论,我的眼睛在燃烧;) –
@HeartWare:如果它是正确缩进并带有正确的小写字母,我会给出一个...很抱歉,这样说我没有进入政治.. 。 –
一个惯用的delphi风格将把C++的东西分离成单独的语句。
如果最里面的最高先例子表达式是预先递减的,那么相当于在delphi中的命令块中创建第一个命令。
Line 1. --i --> Dec(i);
Line 2. func(i) --> func(i);
Line 3. x-=1; --> Dec(x);
C的表现力不能也不应该在其他地方复制。不要把你的C++习语变成其他语言,并尝试以任何其他语言来使用它们。这与说英语相似,并坚持使用属于广东话的语音规则。没有人会理解你,你会在黑暗中工作。
其实Inc既不是++ i也不是i ++,也不是Inc(i,1)等于i + = 1,因为它不计算为一个值。相同Dec .: –