2011-12-05 15 views
2

私は以下の演算子のデルファイ同等のことを知りたいと思います。デルファイの同等の演算子

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

私はちょうどInc(i)i++i--ためDec(i)のための認識しています。

Inc(i,1)i+=1Dec(i,1)i-=1となります。

しかし、--i++iについては考えていません。それはサポートされていますか?

私の前提は正しいですか?必要ではないと示唆している場合。

Thanx事前に。

+6

実際には、Incは++ iもi ++でもなく、Inc(i、1)もi + = 1に等しいわけではありません。 12月にも同じです。 –

答えて

11

Delphiには、これらの演算子と同等のものはありません。

incdecは+ =と-=と似ていますが、C/C++のバージョンが評価される点で異なります。 CおよびCにおけるながら

++あなたは、これは、Delphiで incと単純に不可能です

x = a[i++]; 

書くことができます。だから、Delphiで私は、これらの演算子は、Delphiには存在しない幸せなことに、私一人のためにi++ + ++i + ++i++の意味についての質問の一見無限の供給を目撃した

x = a[i]; 
inc(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:正しくインデントされ、適切な小文字であれば、私は1つを挙げています...そのように言って申し訳ありません、私は政治にはない.. –

-2

慣用的なデルファイスタイルは、C++のものを別々のステートメントに分割することです。

最下位の先行する部分式がプリデクリメントであった場合、同等のことは、それがデルファイのコマンドブロック内の最初のコマンドになることです。

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

Cの表現力は他の場所では再現できないため、再現すべきではありません。あなたのC++イディオムを他の言語に持ち込まず、他の言語で使用しようとしないでください。それは英語を話すことに似ており、広東語に属する発音規則を使用することを主張しています。誰もあなたを理解することができず、あなたは暗闇の中で働くでしょう。

+0

私はここで私の疑問をクリアしようとしています。 – Shirish11

+0

「イディオシズム」については、プロジェクトを1つのテクノロジから別のテクノロジに移行する際に、これらの疑念を解消する必要があります。 – Shirish11

関連する問題