/* 示例代码 */
#include <stdio.h>
#include <complex.h> /* 必要的 */
int main(void){
double _Complex comp_num1 = 1.2 + I * 3.5;
double _Complex comp_num2;
/* 其中 I 可被替换为 _Complex_I */
/* 还有两种复数 */
float _Complex comp_num3 = 1.3 + _Complex_I * 4.2;
long double _Complex comp_num4, comp_num5;
/* 可以直接进行四则运算,同样支持隐式转换。 */
comp_num2 = comp_num1 + comp_num3;
printf("%f+%f*i\n", creal(comp_num2), cimag(comp_num2));
/* 函数 creal 和 cimag 分别获取复数的实部和虚部,
* 返回值为 double 型,这两个函数适用于 double _Complex。
*
* 对于 float _Complex,应使用 crealf、cimagf;
* 对于 long double _Complex,应使用 creall、cimagl。
*/
comp_num4 = (0.7 + 0.6 * _Complex_I) + comp_num3;
/* 还有三角函数 */
/* cos */
comp_num5 = ccosl(comp_num4);
printf("%Lf+%Lf*i\n", creall(comp_num5), cimagl(comp_num5));
/* ccosl 是用于 long double _Complex,
* 对于 double _Complex 应使用 ccos;
* float _Complex 应使用 ccosl.
*/
/* 一般的,用于 float _Complex 的函数,都比用于 double _Complex 的函数多一个f,
* long double _Complex 则多一个l。
* 对于以下函数也适用。
*/
/* 正弦 csin;
* 正切 ctan;
* 反三角函数 casin cacos catan;
* 双曲函数 csinh ccosh ctanh cacosh cacosh catanh;
* 指数函数 cexp;
* 对数函数 clog;
* 取绝对值 cabs;
* 乘方 cpow;
* 开平方 csqrt;
*
* 取辐角 carg;
* 求共轭复数 conj;
* 求投影 cproj;
* 这些函数都适用于 double _Complex。
*/
return 0;
}
用gcc编译时需要加上 -lm 参数。
没有评论:
发表评论