JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: C++ ユーザーズガイド
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

3.  C++ コンパイラオプションの使い方

パート II C++ プログラムの作成

4.  言語拡張

5.  プログラムの編成

6.  テンプレートの作成と使用

7.  テンプレートのコンパイル

8.  例外処理

9.  プログラムパフォーマンスの改善

10.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

14.  複素数演算ライブラリの使用

14.1 複素数ライブラリ

14.1.1 複素数ライブラリの使用方法

14.2 complex 型

14.2.1 complex クラスのコンストラクタ

14.2.2 算術演算子

14.3 数学関数

14.4 エラー処理

14.5 入出力

14.6 混合演算

14.7 効率

14.8 複素数のマニュアルページ

15.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

14.6 混合演算

complex 型は、組み込みの算術型と混在した式でも使用できるように定義されています。算術型は自動的に complex 型に変換されます。算術演算子とほとんどの数学関数の complex バージョンがあります。次に例を示します。

int i, j;
double x, y;
complex a, b;
a = sin((b+i)/y) + x/j;

b+i という式は混合算術演算です。整数 i は、コンストラクタ complex::complex(double,double=0) によって、complex 型に変換されます。このとき、まず整数から double 型に変換されます。ydouble で割られる計算結果です。つまり、ycomplex 型へ変換され、複素数除算演算が使用されます。商もまた complex 型ですので、複素数の正弦関数が呼び出され、その結果も complex 型になります。次も同様です。

ただし、すべての算術演算と型変換が暗黙に行われるわけではありませんし、定義されていないものもあります。たとえば、複素数は数学的な意味での大小関係が決められないので、比較は等しいか否かの判定しかできません。

complex a, b;
a == b; // OK
a != b; // OK
a <  b; // error: operator < cannot be applied to type complex
a >= b; // error: operator >= cannot be applied to type complex

同様に、complex 型からそれ以外の型への変換もはっきりした定義ができないので、そのような自動変換は行われません。変換するときは、実部または虚部を取り出すのか、または絶対値を取り出すのかを指定する必要があります。

complex a;
double f(double);
f(abs(a)); // OK
f(a);      // error: no match for f(complex)