C语言中两个非零double类型相乘结果为0的问题求助
问题排查与修复:矩形/正方形面积计算代码输出0的问题
核心错误是scanf读取double类型变量时格式符使用错误:
你的代码中,side1和side2是double类型,但scanf用了%f格式符(该格式符对应float类型),这会导致输入值无法正确写入double变量,最终计算时变量值异常,输出0。
修正后的代码:
#include <stdio.h> #include <stdlib.h> double molt(double *a, double *b){ return (*a)*(*b); } int main(){ double side1; double side2; printf("Insert the length of the first side: "); scanf("%lf", &side1); // 改为%lf读取double类型 printf("Insert the length of the second side: "); scanf("%lf", &side2); // 改为%lf读取double类型 printf("The Area of your square or rectangle is: %f", molt(&side1, &side2)); return 0; }
补充说明:
scanf中,%lf专门用于读取double类型,%f对应float,二者混用会引发内存访问错误,导致变量存储值异常。printf中%f可以正常输出double类型,因为调用printf时float会自动提升为double处理,所以此处格式符无需修改。
内容的提问来源于stack exchange,提问作者il.giaco
相关产品推荐
相关产品推荐

