这个c代码有什么问题?答案始终为零?
问题描述:
我是c新手,请帮忙,这个答案总是零。为什么?而不是将KM转换为米或厘米(对于错别字)。这个c代码有什么问题?答案始终为零?
#include <stdio.h>
int main()
{
float Km;
float metres;
float inches;
float centimetres;
printf("Welcome, please enter the distance in Km.\n");
scanf("%f", &Km);
metres = Km * 1000;
centimetres = Km*100000;
inches = Km*25/1000000;
printf("Distance In Metres is:\n");
printf("%f\n", &metres);
printf("Distance in Centimeters is:\n");
printf("%f\n", ¢imetres);
printf("Distance in Inches is:\n");
printf("%f\n", &inches);
printf("bye\n");
return 0;
}
答
printf
函数写入变量的值。和号运算符&
将您的值转换为指针,这就是错误。不是打印变量的实际值,而是打印指针的地址内存。
阅读关于printf函数的documentation。有关&
和*
here的更多信息。
答
您正在打印位置的变量。计算很好,但实际上并没有打印变量的值。您正在打印它在内存中的位置。
&
运算符将给出变量的位置。您可以通过在printf语句去掉&
S,修改你的程序,即这样的:
printf("%f\n", &inches);
变为:
printf("%f\n", inches);
+0
“如果要打印位置,...,请使用十进制或十六进制格式化程序(%d和%x”是不好的建议并且会损害良好的答案 - 建议删除'%d'代表'int',不代表地址,要打印'void *',请使用'%p'。 – chux
为什么要将变量的地址发送到printf语句> –
英寸恰好是2.54厘米,而不是2.5英寸。而且我认为你不应该把这个数字除以1000000。 – zwol
Aside'inches = Km * 25/1000000;'better as'inches = centimeters * 2.54;' –