我可以用C代数求和一个复数结构吗?

时间:2019-07-12 20:35:31

标签: c complex-numbers

我正在尝试使用结构的typedef在C语言中创建一个复数库。

typedef struct{
     double real;
     double imag;
}complex_t;

但是我很好奇,是否可以使用此定义使用“ +”和“ *”符号进行复数运算,而不是使用复数运算 创建complex_t sum(complex_t z,complex_t w)complex_t prod(complex_t z,complex_t w)。我想做这样的事情:

#include<complex_library.h>

complex_t z1,z_2,w_1,w_2;
z_1 = newComplex(1,2);
z_2 = newComplex(-3,-4);

w_1 = z_1 + z_2;
w_2 = z_1 * z_2;

谢谢。

2 个答案:

答案 0 :(得分:1)

我很as愧将此作为答案发布,但这是一个有效的问题,每个问题都应得到答案。

  

我很好奇是否可以使用此定义使用'+'和'*'进行一些计算

否,这是不可能的。 C根本不支持运算符重载。 C ++支持此功能,但不支持C。

边注::避免使用后缀_t。它在POSIX中保留。当然,它不是C标准中保留的,但是POSIX很大。

  

以“ _t”结尾的名称保留用于其他类型名称。

https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html

答案 1 :(得分:0)

为评估复数上的+,-,* //运算,最好更好地定义分别对实部和虚部运算的函数。由于C中没有运算符重载,因此定义单独的函数似乎是唯一的选择希望有帮助。