我用C编写了以下代码:
#include<stdio.h>
int main()
{
int num;
scanf("Enter a number %d",&num);
printf("%d",num);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
此代码在接受输入后始终返回 32766、32764、32767 等周围的特定值。
为什么会发生这种情况?这些数字有什么特点?
传递过来的字符串scanf不是要打印的提示,而是要用户匹配的格式字符串。因此,正如它所写的那样,它希望您输入“输入数字”,然后输入数字。
您应该使用printf打印提示,然后%d在scanf格式字符串中只包含格式说明符。
printf("Enter a number ");
scanf("%d",&num);
Run Code Online (Sandbox Code Playgroud)
更好的是,检查 返回值scanf以确保输入与格式说明符匹配。
printf("Enter a number ");
if (scanf("%d",&num) == 1) {
printf("%d",num);
}
Run Code Online (Sandbox Code Playgroud)