为什么我输入的正数scanf会读取到一个负数?
#include <stdio.h>
int scanf(const char *format,...);
输入控制符和输出控制符一样。是操作系统用来转化从键盘上接收来的字符数据。
例:键盘上输入123,表示的并不是数字123,而是字符’1’、‘2’、‘3’,%d
即是将从键盘上输入的合法字符转化成一个十进制数字。
&
是一个取地址符,加上变量名后表示“变量的地址”,&i
就表示变量i的地址,相当于将数据存入以变量i的地址为地址的变量中
在C语言中,使用scanf函数读取输入时可能会出现读取到负数而非正数的情况。这可能是由于以下原因导致的:
#include <stdio.h>
int main()
{
int num;
while (scanf("%d", &num) != EOF)
{
if (scanf("%d", &num) == 0) {
getchar();
continue;
}
if (num > 0) {
printf("输入的数字是正数:%d\n", num);
} else {
printf("输入的数字是负数:%d\n", num);
}
}
return 0;
}
#include <stdio.h>
int main()
{
int num;
printf("请输入一个正数:");
scanf("%d", &num);
getchar(); // 消耗掉输入缓冲区中的换行符
if (num > 0) {
printf("输入的数字是正数:%d\n", num);
} else {
printf("输入的数字是负数:%d\n", num);
}
return 0;
}
以上是两种可能的解决方案,根据具体的情况选择适合的方法来解决问题。
太大了 超范围
int的取值范围为: -2^31——2^31-1,即-2147483648——2147483647