Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
delphi中的等价算子_Delphi_Operators_Equivalent - Fatal编程技术网

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++版本的计算

我想知道Delphi等效的下列运算符

++i/--i
i++/i--
i+=1/i-=1
我只知道
I++
Inc(I)
Dec(I)
I--

同样在
Inc(i,1)
for
i+=1
Dec(i,1)
for
i-=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的观点,让读者更容易理解,遵循惯例。我在这里试图澄清我的疑问,我不认为没有人能阻止我这么做。关于“白痴”,在将项目从一种技术迁移到另一种技术时,需要澄清这些疑问。