在研究C语言中复数运算的时候,遇到很多小问题,想来应该比较常见和多频,所以在这分享记录一下
---------------------------分割线-------------------------------------
C语言中支持使用复数类型,需要引入complex.h库。
发现网上各种网站给使用方法都有问题,有让直接用complex的,有让写float complex的,有让写complex double的,很多用法。但是实测基本都不行,VS2022中测试会报错。
正确的写法可以写_C_float_complex或者_Fcomplex。顾名思义,这是float类型组合的复数,原型如下:
typedef struct _C_float_complex
{
float _Val[2];
} _C_float_complex;
其他的类型也有,如:
typedef struct _C_ldouble_complex
{
long double _Val[2];
} _C_ldouble_complex;
具体可以进入complex.h库查看细节,里边还有一些常用的复数运算函数,如:
复数相乘:
_FCmulcc()
原型为:
_ACRTIMP _Fcomplex __cdecl _FCmulcc(In _Fcomplex _X, In _Fcomplex _Y);
此外,如遇需要对复数进行操作的时候,直接令complex类型的两个变量a+b这样是不行的,因为它本质上是个结构体,需要用“.”唤出其中的一个数组才能进行计算,如:a._Val[0] = b._Val[0]。