我正在编写一个简单的C程序来接受来自用户的输入编号并显示它只是因为早些时候我正在编写一些C程序而且这个愚蠢的错误让我觉得它直到昨天才出现
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a;
printf("Enter a number");
scanf("%d",&a);
printf("Display number%d",&a);
}
每次我运行一个接受输入的程序时,它会显示一个看似随机的值而不是我在其他任何程序中输入的那个,这里 是O / p: 输入一个数字:12 显示号码:2752300 进程返回7(0X7)执行时间:1.880秒 按任意键继续
我不知道是编译错误还是导致此问题的内存错误但是对于记录我尝试使用不同的IDE,如DEV C / C ++,Turbo C / C ++和代码块,但错误仍然存在除了在Turbo C / C ++中,它显示一个有符号数的i输入例如:如果输入为12则显示:-12。
答案 0 :(得分:6)
问题出在你的打印声明中。您正在打印a的地址,而不是值。使用print("%d",a);
答案 1 :(得分:2)
%d
的{{1}}格式说明符需要printf
,而不是int
:
int *
它不会尝试写入printf("%d",a);
,因此它不需要其地址。
如果你打开警告级别(gcc为a
)进行编译,它会告诉你:
-Wall -Wextra
答案 2 :(得分:0)
如果要改变变量本身,scanf需要一个指向变量的指针,所以我们使用address-of运算符来获取指针。
scanf()收到“%d”作为参数,然后知道它需要读取一个整数并将其存储在参数列表的下一个变量中。
imports