为什么不赢这个节目给我想要的输出?

时间:2016-11-03 14:45:46

标签: c printf

我已经编写了这个简单的代码,因此我可以看到我编写的更复杂程序的错误。

#include<stdio.h>
int main()
{
    int n = 0, i = 1, a = 0;
    scanf("%d", &n);
    while (i <= n)
    {
        scanf(" %d", &a);
        printf("%d", &a);
        i++;
    }
}

但是当我运行程序时它会像这样: 4 1 6487620 它有什么问题?

3 个答案:

答案 0 :(得分:1)

在您的代码中

 printf("%d", &a);

应该是

printf("%d", a); // don;t print address....

FWIW,将地址(指针类型)作为参数传递给%d是不匹配的,并调用undefined behavior

答案 1 :(得分:1)

使用时  printf("%d", &a);

这意味着它会打印a

的地址

并打印您必须怀疑的a的值

printf("%d", a);

并在进行更改后编译程序并尝试重新运行:)

答案 2 :(得分:0)

您将a的地址而不是其值传递给printf。您还应输出换行符以分隔数字:

printf("%d\n", a);