c - C语言中的欧拉恒等式

标签 c

今天我在用 C 语言处理复数,所以(很自然地)我尝试用 Euler 恒等式编程。我们都知道 e = -1 但出于某种原因 C 想要返回(正)1——这是为什么呢?谢谢!

#include <stdio.h>
#include <math.h>
#include <complex.h>

double main(void){
    double complex exponent = M_PI*I;
    double complex power = exp(exponent);
    printf("%.f\n",power);
    return power;
}

最佳答案

复数被强制转换为实数,因为 exp 需要一个 double 参数。强制转换丢弃虚部,仅传递实部,即 0。因此,exp(0) = 1

您应该使用 cexp 而不是 expcexp 需要一个 double complex

您也不应将复数 直接传递给printf,而应显式打印实部和虚部,如下所示:

#include <stdio.h>
#include <math.h>
#include <complex.h>

double main(void){
    double complex exponent = M_PI*I;
    double complex power = cexp(exponent);
    printf("%.f + %.fi\n", creal(power), cimag(power));
    return power;
}

此外,从 main 返回一个 double 很奇怪......

关于c - C语言中的欧拉恒等式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43828662/

相关文章:

c - c中修饰符static的使用

c - 如何在不深入设备驱动程序的情况下编写操作系统

c - 你将如何迭代这个二维链表?

c++ - 不以 nul 结尾的常量字符串文字

改变指针的值但保留地址

c++ - 为什么 int* ptr_arr_int = {1,2};在 C/C++ 中不起作用?

c - 如何部分比较 C 中的两个字符串?

c - 我如何找出一个值是否在 C 的数组中?

检查文件是否存在于c中

c - Getchar在c中只保存1个字符