我可以在 C 中对复数结构进行代数求和吗?
Can I sum algebraically in C a complex numbers structure?
我正在尝试使用结构的 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;
谢谢。
我几乎羞于 post 将此作为答案,但这是一个有效的问题,每个问题都应该得到答案。
I'm curious whether if it's plausible to use this definition to do some computations using the '+' and '*'
不,这是不可能的。 C 根本不支持运算符重载。 C++ 支持这个,但 C 不支持。
旁注: 避免使用 _t
后缀。它在 POSIX 中保留。当然,它在 C 标准中没有保留,但 POSIX 相当大。
Names that end with ‘_t’ are reserved for additional type names.
https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html
用于计算复数的 +、-、*、/ 运算 no.s,最好定义对实部和虚部进行运算的函数 separately.Since C 中不提供运算符重载,定义单独的函数似乎是唯一有帮助的option.Hope。
我正在尝试使用结构的 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;
谢谢。
我几乎羞于 post 将此作为答案,但这是一个有效的问题,每个问题都应该得到答案。
I'm curious whether if it's plausible to use this definition to do some computations using the '+' and '*'
不,这是不可能的。 C 根本不支持运算符重载。 C++ 支持这个,但 C 不支持。
旁注: 避免使用 _t
后缀。它在 POSIX 中保留。当然,它在 C 标准中没有保留,但 POSIX 相当大。
Names that end with ‘_t’ are reserved for additional type names.
https://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html
用于计算复数的 +、-、*、/ 运算 no.s,最好定义对实部和虚部进行运算的函数 separately.Since C 中不提供运算符重载,定义单独的函数似乎是唯一有帮助的option.Hope。