• ベストアンサー

複素変数に値が正しく代入されない

複素変数を使ったプログラムを作るために、 まず複素変数を作成して値を表示するだけのプログラムを作ったのですが、 虚数部分に代入されるはずの値が実数部分に表示され、 虚数部分には0が表示されてしまいます。 書いたプログラムは #include<stdio.h> #include<complex.h> int main(void){ complex<double> a=(1.2,2.3); printf("%g %gi\n",real(a),imag(a)); } 結果は 2.3 0i でした。 どこで書き方を間違えているのでしょうか。 cファイルだとcomplex.hをインクルードしようとすると stdcomp.hでエラーが出るのでcppファイルにしています。 コンパイラはBorland C++ Compiler 5.5を使っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • MOSUKUN
  • ベストアンサー率100% (2/2)
回答No.1

変数 a の初期化方法が間違っているようです。 complex<double> a = (1.2,2.3); を、 complex<double> a(1.2,2.3); に変更すれば、正しく動作します。

hirai2912
質問者

お礼

なるほど、初期化の方法が間違っていたんですね。 修正したら正しく代入できました。 ありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

そうですね。 >complex<double> a=(1.2,2.3); この書き方だと コンマ演算(カンマを左から評価して、最後に評価した値になる)で 最終的に complex<double> a=2.3; てなってしまいますね。

関連するQ&A