我需要使用牛顿方法处理复数以提取多项式的虚根。
我遇到了错误,因此我将代码分解为简单的问题,以了解问题所在。当我尝试编译它时,它返回一个错误:
警告:赋值目标不是真正的左值;将来这将是一个硬错误
我也想知道是否仍然可以显示整个复数而无需使用creal
和cimag
。
#include<stdio.h>
#include<complex.h>
int main()
{
double complex z1 = 2 + 3*I;
creal(z1) = 5;
cimag(z1) = 10;
printf("%.2f +%.2f *i \n", creal(z1), cimag(z1));
return 0;
}
最佳答案
问题是这些行:
creal(z1) = 5;
cimag(z1) = 10;
creal和cimag返回双倍。您不能分配给函数返回值。您可以将函数的返回值分配给另一个变量,例如
double real = creal(z1)
。