这是我的代码,我仍在继续寻找错误,我是初学者,我想学习:
#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
答案 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