c - C - if-else 语句的不合理结果
问题描述
我以多种方式更改了条件,但编译器总是第二个条件为真。
int signf(int a);
int main(void)
{
printf("Enter A Number :\n");
int i = scanf("%d", &i);
signf(i);
return 0;
}
int signf(int a)
{
if(a<0)
{
printf("Your Number is Negative\n");
}
else if((a>=0)&&(a<10))
{
printf("Your Number has One Digit\n");
}
else if((a>=10)&&(a<100))
{
printf("Your Number has Two Digits\n");
}
else if((a>=100)&&(a<1000))
{
printf("Your Number has Three Digits\n");
}
else
{
printf("Your Number is Huge!\n");
}
printf("This is End!\n");
return 0;
}
它总是显示:你的号码有一位,无论我输入 8 还是 56 或 849,条件总是正确的。
这个代码有什么问题?我希望工作正常,但没有。
解决方案
int i = scanf("%i", &i);
是滥用scanf
- 你的编译器没有警告你吗?
scanf
返回已成功读取的参数数,在您的情况下为 1,假设读取成功。那是一位数字!(是的,检查 的返回值总是一个好主意scanf
。)
正如您的问题所暗示的那样,一个好的逐行调试器不会让您失去嗅觉 - 问题不在signf
.
推荐阅读
- android - picasso 或 glide 不支持 jpeg 图像格式
- docker - docker compose 中的 NSQD
- r - corrplot 中的显着性值
- tsql - 检查上一条和下一条记录
- python-2.7 - 如何将包含两个步骤的命令的输出发送到文件?
- css - CSS - box-sizing:border-box 仍然为整体高度添加边框
- c#-4.0 - “应用程序处于中断模式” C# 使用 throw 冒泡异常时
- python - flask test_client 为有效的 url 返回 404
- sas - 如何使规范的 PROC CALIS LINEQS 示例工作?
- html - 提供使用 HTML 将项目添加到日历的选项 - 仅限 Outlook