delphi中的等价算子
我想知道Delphi等效的下列运算符delphi中的等价算子,delphi,operators,equivalent,Delphi,Operators,Equivalent,我想知道Delphi等效的下列运算符 ++i/--i i++/i-- i+=1/i-=1 我只知道I++的Inc(I)和Dec(I)的I-- 同样在Inc(i,1)fori+=1和Dec(i,1)fori-=1的概念下 但是不知道--i和++i。支持吗 我的假设正确吗?如果没有,请提出必要的建议 提前准备好 Delphi没有与这些操作符中的任何一个等价物 ++i/--i i++/i-- i+=1/i-=1 在这种情况下,inc和dec类似于+=和-=,但它们的不同之处在于C/C++版本的计算
++i/--i
i++/i--
i+=1/i-=1
我只知道I++
的Inc(I)
和Dec(I)
的I--
同样在Inc(i,1)
fori+=1
和Dec(i,1)
fori-=1
的概念下
但是不知道--i
和++i
。支持吗
我的假设正确吗?如果没有,请提出必要的建议
提前准备好 Delphi没有与这些操作符中的任何一个等价物
++i/--i
i++/i--
i+=1/i-=1
在这种情况下,inc
和dec
类似于+=和-=
,但它们的不同之处在于C/C++版本的计算结果为一个值
在C和C++中你可以写< /P>
x = a[i++];
这在Delphi中的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;
及
<> p>和各种重载,可以实现这些C运算符的各种变体。< /P> < P>一个惯用的Delphi风格将把C++的东西分成单独的语句。
++i/--i
i++/i--
i+=1/i-=1
如果最里面最高的前置子表达式是一个预减量,那么等效的方法是使它成为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也是一样。您是否仍然使用Modula2作为参考语言,以大写形式编写所有这些内容?:)只需添加
inlinekeyword,你会很快得到一些东西。@HeartWare:如果缩进和小写正确,我会放弃一个。。。很抱歉这么说我不喜欢政治…什么是“适当的小写”?据我所知,Pascal不是一种区分大小写的语言,那么为什么它的用户应该这样做呢?:)Pascal也不是位置相关的语言,那么什么才算是“正确缩进”?:)不要根据封面来判断一本书:-)。我很惊讶你竟然把我的编辑卷退了。我认为,如果这是一种他们熟悉的风格,人们会更加关注它。我个人在SO编写代码的方式与我在日常工作中的不同。我这样做只是为了让人们更容易阅读。我认为这个答案会吸引更多的选票,如果它在视觉上不那么刺耳的话。在很多情况下,风格先于内容,所以这更多的是一个宗教问题而不是政治问题。我同意David的观点,让读者更容易理解,遵循惯例。我在这里试图澄清我的疑问,我不认为没有人能阻止我这么做。关于“白痴”,在将项目从一种技术迁移到另一种技术时,需要澄清这些疑问。