2

次の演算子に相当するDelphiについて知りたいのですが。

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

私はただInc(i)のためにi++そしてDec(i)のために知っていi--ます。

Inc(i,1)また、 fori+=1Dec(i,1)forの概念の下でi-=1

--iしかし、とについてはわかりません++i。サポートされていますか?

私の仮定は正しいですか?必要な提案がない場合。

よろしくお願いします。

4

3 に答える 3

11

Delphiには、これらの演算子に相当するものはありません。

とは+=incdec似て-=いますが、C /C++バージョンが値を評価するという点で異なります。

CおよびC++では、次のように記述できます。

x = a[i++];

incこれはDelphiでは不可能です。だからDelphiでは私はそれを次のように書くでしょう

x = a[i];
inc(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

慣用的なデルファイスタイルは、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 に答える