我有一个旧的c程序样本,它使用fftw来求解微分方程。
编译时出错的程序的两行是:
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__
,但我无法记住它。任何人都可以告诉我如何摆脱错误?任何帮助将不胜感激。
答案 0 :(得分:1)
将值分配给我之后执行的复数
__real__(comp[i1+n*i2]) = ...
__imag__(comp[i1+n*i2]) = ....
答案 1 :(得分:0)
creal
是一个函数,它返回一个值,你不能为值赋值。
例如,假设creal
已评估为0.0
,就像您要尝试的那样:
0.0 = c_zero + 1/15;
creal
是C标准函数:
#include <complex.h>
double creal(double complex z);
答案 2 :(得分:0)
如果你是对的,可以实施:
int * pointer_generator()
{
return (int *)malloc(8);
}
int main()
{
*( pointer_generator() )=123234;
return 0;
}
这很有用。 VC ++ 2010。 但它指向哪里?谁知道?
答案 3 :(得分:0)
由于您的新复数值的虚部应该是0
,您可以这样做
comp[i2+n_y*i1]= c_zero + 1/15;
复杂对象是C中的第一类citicens,可以直接分配。
如果你想添加另一个想象中的部分
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;