我收到以下错误: 格式'%d'期望类型' int'的参数,但参数2的类型为' int *' 我不知道为什么会期待int *,有人可以向我解释一下吗?
#include <stdio.h>
int main(void)
{
int wisselgeld = 70;
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
a = wisselgeld / 200;
b = (wisselgeld - (a * 200)) / 100;
c = (wisselgeld - (a * 200) - (b * 100)) / 50;
d = (wisselgeld - (a * 200) - (b * 100) - (c * 50)) / 20;
e = (wisselgeld - (a * 200) - (b * 100) - (c * 50) - (d * 20)) / 10;
f = (wisselgeld - (a * 200) - (b * 100) - (c * 50) - (d * 20) - (e * 10)) / 5;
printf("%d\n"
"%d\n"
"%d\n"
"%d\n"
"%d\n"
"%d\n", &a, &b, &c, &d, &e, &f);
return 0;
}
答案 0 :(得分:2)
&variable
是一个内存地址。当您需要int
时,您正在使用int *
指针(int
)。要传递int
作为参数,只需使用变量名称,例如a
而不是&a
。
答案 1 :(得分:1)
&amp;(variable)提供变量的地址。要打印值,您可以直接使用整数变量名称。
答案 2 :(得分:1)
printf
和scanf
期待两件不同的事情,这可能会导致您出现此错误的原因。
int*
(指向整数的指针或整数的地址)是将(&amp;)整数变量的地址取得的结果。只需将&a, &b
,...更改为a, b
...即可获得解决方案。但是,要在输入/输出中使用相同的变量,请在任何scanfs中继续使用&a
,但在任何printfs中使用a
。
答案 3 :(得分:0)
致电时
printf("%d\n"
"%d\n"
"%d\n"
"%d\n"
"%d\n"
"%d\n", &a, &b, &c, &d, &e, &f);
&
符号表示您正在获取变量地址。由于变量类型为int
,因此您获得的是int *
。你要写的是
printf("%d\n"
"%d\n"
"%d\n"
"%d\n"
"%d\n"
"%d\n", a, b, c, d, e, f);
答案 4 :(得分:0)
删除&amp;符号有效 谢谢你的帮助