0

微分方程式を解くためにfftwを使用するcプログラムの古いサンプルがあります。

コンパイル中にエラーが発生するプログラムの2行は次のとおりです。

creal(comp[i2+n_y*i1]) = c_zero + 1/15;
cimag(comp[i2+n_y*i1]) = 0.0;

ここで、compはcrealを含む複素変数であり、cimagはその実数部と虚数部です。ある時点(i2、i1)で値を割り当てようとしています。

エラーが発生します

 **error: lvalue required as left operand of assignment**

私も以前にこの問題を抱えていました、そして、私はそれを思い出すことができませんが、修正は何かでcreal置き換えることでした。__creal__誰かがエラーを取り除く方法を教えてもらえますか?どんな助けでもありがたいです。

4

4 に答える 4

1

複素数に値を割り当てるには、次のように機能しました

__real__(comp[i1+n*i2]) = ...
__imag__(comp[i1+n*i2]) = ....
于 2012-08-16T12:36:41.890 に答える
0

あなたの新しい複素数値の虚数部はあなたがすることができるはずな0ので

comp[i2+n_y*i1]= c_zero + 1/15;

複雑なオブジェクトはCのファーストクラスの市民であり、直接割り当てることができます。

別の架空の部分を追加したい場合

comp[i2+n_y*i1]= c_zero + 1/15 + 78 * I;

あなたは働くcomplex.hために含める必要があるでしょうI

編集:それc_zeroが複雑なものとして入力されただけだとすると0、おそらく正しい書き込みは

comp[i2+n_y*i1]= 1.0/15 + 78 * I;
于 2012-08-13T18:46:21.730 に答える
0

あなたが正しければ、これは実装できます:

int * pointer_generator()
{
  return (int *)malloc(8);
 }

int main()
{
  *( pointer_generator() )=123234;
  return 0;
  }

これはうまくいきました。VC++ 2010.しかし、それはどこを指すのでしょうか? 知るか?

于 2012-08-13T18:37:48.450 に答える
0

crealは関数であり、値を返します。値には何も代入できません。

たとえば、次のようcrealに評価されると仮定0.0します。

0.0 = c_zero + 1/15;

crealは C 標準関数です。

#include <complex.h>
double creal(double complex z);
于 2012-08-13T18:35:05.467 に答える