我不知道为什么它不起作用,格式%d期望

时间:2016-07-26 18:53:15

标签: c

我收到以下错误: 格式'%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;
}

5 个答案:

答案 0 :(得分:2)

&variable是一个内存地址。当您需要int时,您正在使用int *指针(int)。要传递int作为参数,只需使用变量名称,例如a而不是&a

答案 1 :(得分:1)

&amp;(variable)提供变量的地址。要打印值,您可以直接使用整数变量名称。

答案 2 :(得分:1)

printfscanf期待两件不同的事情,这可能会导致您出现此错误的原因。

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;符号有效 谢谢你的帮助