C语言中的变量乘法? //水电站大坝助手 #包括 #定义GRV 9.80 #定义EFINC 0.9 #定义EFINC2 90 int main() { //定义要使用的所有变量 双高、工作、质量; printf(“坝高(米):”; 扫描频率(“%lf”和高度); printf(“水流量(千立方米/秒):”; 扫描频率(“%lf”和质量); 功=(质量*重力*高度*EFINC); printf(“大坝将在%d%%效率下产生%f兆瓦”,以及工作,EFINC2); 返回0; }
值设置正确,我通过让它打印高度和质量来测试它,但工作从来没有收到一个值,EFINC2打印出一个荒谬的数字,我真的不确定C语言中的变量乘法? //水电站大坝助手 #包括 #定义GRV 9.80 #定义EFINC 0.9 #定义EFINC2 90 int main() { //定义要使用的所有变量 双高、工作、质量; printf(“坝高(米):”; 扫描频率(“%lf”和高度); printf(“水流量(千立方米/秒):”; 扫描频率(“%lf”和质量); 功=(质量*重力*高度*EFINC); printf(“大坝将在%d%%效率下产生%f兆瓦”,以及工作,EFINC2); 返回0; },c,variables,constants,multiplication,C,Variables,Constants,Multiplication,值设置正确,我通过让它打印高度和质量来测试它,但工作从来没有收到一个值,EFINC2打印出一个荒谬的数字,我真的不确定 //Hydroelectric Dam Helper #include <stdio.h> #define GRAV 9.80 #define EFINC 0.9 #define EFINC2 90 int main() { //Defines all the variables to be used double height, work, mass;
//Hydroelectric Dam Helper
#include <stdio.h>
#define GRAV 9.80
#define EFINC 0.9
#define EFINC2 90
int main()
{
//Defines all the variables to be used
double height, work, mass;
printf("Height of dam (in meters):");
scanf("%lf", &height);
printf("Flow of water (in thousand cubic meters per second):");
scanf("%lf", &mass);
work = (mass * GRAV * height * EFINC);
printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);
return 0;
}
应改为:
printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);
&work
是指向work的指针,即double*
,但对于printf
要打印值,需要传递一个double
,而不是指针。在您的平台上,double*
可能与double
的大小不同,从而导致后续的printf
格式使用错误的数据
应改为:
printf("The dam would produce %f megawatts at %d%% efficency", &work, EFINC2);
&work
是指向work的指针,即double*
,但对于printf
要打印值,需要传递一个double
,而不是指针。在您的平台上,double*
可能与double
的大小不同,从而导致后续的printf
格式使用错误的数据。问题在于,您的printf输出带有%f
说明符的float
,但通过
传入了double*
。只需卸下&
,它就可以正常工作了
printf("The dam would produce %f megawatts at %d%% efficency", work, EFINC2);
问题是printf使用
%f
说明符输出一个浮点
,但通过&work
传入一个双*
。只需卸下&
,它就可以正常工作了
printf("The dam would produce %f megawatts at %d%% efficency", work, EFINC2);
您收到“荒谬数字”的原因是您正在将
work
的地址传递给printf()
。将&work
更改为work
,它应该可以正常工作。您收到“荒谬数字”的原因是您正在将work
的地址传递给printf()
。将&work
更改为work
,它应该可以正常工作。当然可以。printf行中的&符号表示读取变量work
的地址,而不是值。printf行中的&符号表示读取变量work
的地址,而不是值尝试在常量中添加一个d,以强制c不转换为int。您还可以尝试显式地将值强制转换为float或double。尝试在常量后面附加一个d,以强制c不强制转换为int可能会起作用。您还可以尝试显式地将值强制转换为float或double。您已经给出&work,它是内存中work变量的地址,因此它不会打印任何荒谬的值,而是打印work的内存位置
您应该删除&from&work以接收work变量的值
printf(“大坝将以%d%%的效率产生%f兆瓦”,工程,EFINC2) 您已经给出了&work,它是内存中work变量的地址,因此它不会打印任何荒谬的值,而是打印工作的内存位置 您应该删除&from&work以接收work变量的值
printf(“大坝将以%d%%的效率产生%f兆瓦”,工程,EFINC2) 很容易想到控制台上打印的是变量值…..为了安全,请始终在调试器中检查实际变量。很容易想到控制台上打印的是变量值…..为了安全,请始终在调试器中检查实际变量。