我正在尝试使用结构的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;
谢谢。
答案 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中没有运算符重载,因此定义单独的函数似乎是唯一的选择希望有帮助。