如果在scanf函数中遗漏了对userNumber的引用,为什么这个程序会停止工作?
#include <stdio.h>
int main()
{
int userNumber;
printf("Enter a number: ");
scanf("%d", &userNumber);
while (userNumber != 10)
{
printf("\nWrong number. Try again\n");
printf("\nEnter a number: ");
scanf("%d", &userNumber);
}
return 0;
}
最佳答案
scanf("%d")需要传递一个指针作为其第二个参数,因此您确实需要编写:
int userNumber;
scanf("%d", &userNumber);
如果取出引用,则输入将无法正确读取,而
userNumber
实际上处于未初始化状态,这将导致未定义的行为,这可能解释了您看到的行为。如果从第一次扫描中删除了引用,则应该看到一个警告:
Georgioss-MacBook-Pro:~ gsamaras$ gcc main.c
main.c:8:17: warning: format specifies type 'int *' but the argument has type
'int' [-Wformat]
scanf("%d", userNumber);
~~ ^~~~~~~~~~
1 warning generated.
关于c - 当在scanf()中省略对变量的引用时,程序停止工作。为什么是这样?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44722195/