C语言代码运行输出为0 排查常见问题后仍无法定位原因
C代码输出0问题排查结论
- 核心错误点:
scanf函数的格式说明符和变量类型不匹配
你声明变量a为double类型,但scanf读取a时使用了仅适配float类型的%f占位符,会导致输入的数值无法正确写入a的内存空间,a得到异常值后,后续atan2、sin的计算结果全部出错,最终fr输出接近0。 - 修复方法:将代码中的
scanf("%f",&a);修改为scanf("%lf",&a);即可正常运行。
额外说明:
printf输出double类型时使用%f是符合规范的,因为可变参数列表中的float类型会自动提升为double,你现有的printf写法不需要调整。- 代码中定义的
pi变量全程未使用,属于冗余代码,不需要可以直接删除,不影响运行结果。
修复后完整代码
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { double theta , fr , a; printf("Enter the value of a \n"); scanf("%lf",&a); theta = atan2(a,27.5); printf("%f",theta); fr = 1.67 * 1e-6 * sin(theta); printf(" frequency = %f",fr); return 0; }
内容的提问来源于stack exchange,提问作者bishoy hanna
相关产品推荐
相关产品推荐

