数学の世界では虚数と複素数が何であるかは知っていますが、C++ ではどうなのか、複素数と虚数のデータ型は何ですか。さらに、_Imaginary や _Complex などのデータ型も見られます。違いは何ですか?また、複雑なデータ型と架空のデータ型とは何ですか?
5 に答える
_Imaginary
および_Complex
は、虚数および複素数の浮動小数点変数型を定義するために使用される C99 言語標準のキーワードです。それらは C++ 言語の一部ではありません。それらはそれ自体がデータ型ではありません。それらはfloat
、double
およびlong double
型を変更します。例えば:
float _Imaginary x; // imaginary 32-bit number
double _Complex y; // complex 64-bit number
long double _Complex z; // complex 80-bit number
_Imaginary
実数と虚数を加算すると値が得られることを除いて、値は通常の実数とほとんど同じです_Complex
。
ヘッダー ファイル<complex.h>
は、マクロimaginary
を_Imaginary
およびcomplex
として定義する_Complex
とともに、または(虚数単位) のI
いずれかも定義します。これは、従来の C プログラムが識別子としてandを使用できるようにするためです。新しいプログラムでは and の代わりに and を使用する必要があります。アンダースコアで始まり、その後に大文字が続く識別子は実装によって予約されているため、レガシー コードでは決してorを使用しないでください。_Complex_I
_Imaginary_I
complex
imaginary
complex
imaginary
_Complex
_Imaginary
_Complex
_Imaginary
一方、C++ はこれを使用せず、代わりにテンプレート化された型std::complex<float>
、std::complex<double>
、およびstd::complex<long double>
複素数を処理するためのものを持っています。これらのクラスは C99 型と非常によく似た機能を果たしますが、互換性はありません。
これらは実際には C++ データ型ではなく、C データ型です。
新しい C 標準を作成するとき、委員会は新しいキーワードの使用を避けます。そのため、アンダースコアで始まる予約済みの識別子を使用します。次に、標準では、より適切なマクロ ( _Complexの代わりにcomplex )を定義するヘッダー ファイルも提供される場合があります。
C++ は C よりも新しいため、最初に標準化されてから複雑なデータ型が含まれており、下線付きのバージョンに頼る必要はありません。
<complex>
標準ライブラリのすべての部分である、便利な複素数データ型を定義するヘッダーがあります。ここにドキュメントがあります。
これじゃない?
および別のソースから:
_Imaginary
Revision as of 11:59, 3 December 2010 by PyBot (Talk | contribs)
Category
Reserved Words
Syntax
_Imaginary
Description
Reserved for future use.
Warning: C++Builder does not implement _Imaginary but does treat it as a keyword when the -An compiler flag is set. Do not use _Imaginary as an identifier.
C++ には、、、およびに対してインスタンス化できる<complex>
テンプレート クラス を定義するというヘッダーがあります。これにより、複素数を定義し、通常の算術演算といくつかの関数を実行できます。double<>
float
double
long double
標準 C++ にはクラスや型はなくimaginary
、実数部が 0.0 の複素数だけです。どのimaginary
クラスも、ある種のベンダー拡張になります。(個人的には、imaginary
クラスがあまり役に立たないと思います。乗算で閉じられていません。)
アンダースコアで始まり、大文字が続く名前はすべて、実装で使用するために特別に予約されているため、標準 C++ がそれらについて言う必要はありません。そのようなタイプは実装固有であり、実装を指定していません。さらに、それはおそらくあなた自身が使うべきものではありません。