我的代码有什么问题,我希望在int中打印输出,但似乎不是?

时间:2016-01-16 13:29:32

标签: c printf

这是我的代码,我仍在继续寻找错误,我是初学者,我想学习:

#include<stdio.h>
int main()
{
    int a;

    printf("Input: ");
    scanf("%d", &a);
    printf("\n%d", &a);
    a+=2;
    printf("\n%d", &a);
    a+=4;
    printf("\n%d", &a);
    a+=2;
    printf("\n%d", &a);
    return 0;
}

这是输出:

Input: 10

-1078169908
-1078169908
-1078169908
-1078169908

4 个答案:

答案 0 :(得分:6)

您无需将a的地址传递给printf()即可打印内容。

更改

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

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

此外,您应该检查scanf()的返回值。如果scanf()失败,您将通过访问整合的局部变量来调用undefined behavior

尽管如此,int main()至少应该int main(void)符合标准。

答案 1 :(得分:3)

只是为其他人添加一些观点&#39;答案:

  

&安培;运算符给出变量的地址

所以当你说:

scanf("%d",&a);

实际上,您告诉编译器将变量a的地址传递给scanf函数,以便scanf更改变量a的值,因为如果您调用scanf 1}}像这样:

scanf("%d",a);

您只是将a的值传递给scanf,因此无法更改a的值。

但是当您使用printf时,函数printf无需更改变量a的值,因此它可以像这样调用printf并且它将成功编译:

printf("%d",a);

您可以阅读更多here(实际上这种语法在某些语言中使用)

答案 2 :(得分:0)

应该是这样的: -

#include <stdio.h>

int main()             
{
           int a;

           printf("Input: ");
           scanf("%d", &a);
           printf("\n%d", a);
           a+=2;
           printf("\n%d", a);
           a+=4;
           printf("\n%d", a);
           a+=2;
           printf("\n%d", a);
           return 0;
}

printf ()函数用于在屏幕上打印消息,这就是我们在&函数中使用printf ()运算符的原因&当您从用户喜欢scanf ()功能,所以,您要做的就是在每个&功能中删除printf (),其余功能正常。

答案 3 :(得分:0)

为您提供的一些提示:

  • 当您使用scanf ()从用户获取价值并将其存储时,请始终使用如下:&a

  • 使用printf ()打印任何值时,请不要放&a。仅使用a

&a移除printf ()并写入a