scanf函数设定值
我写了一个简单的代码,我有一个问题,这里是我的代码:scanf函数设定值
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int first = 0;
int second = 0;
printf("please enter two integers to determine their relation: \n");
scanf("%d %d",&first , &second);
if (first == second)
{
printf("%d and %d are equal\n", first ,second);
}
else if (first > second)
{
printf("%d is bigger than %d \n" ,first ,second);
}
else if (first < second)
{
printf("%d is smaller than %d \n" ,first ,second);
}
else
{
printf("something is wrong \n");`
}
system("pause");``
return 0;
}
现在,当我进入我想我会得到一些错误的字符,但之后,而不是我把它在它返回0等于0, 为什么?
现在当我输入一个字符时,我想我会得到一些错误,但是在我把它放入它后返回0等于0,为什么?
您确实出现错误,但您忽略了它。 scanf()
的返回值(如果为非负值)告诉您有多少输入字段已成功转换和分配。如果输入不能与模式相匹配,那么您的匹配失败。如果发生在至少一个输入字段指令之前的模式中的某一点,那么将导致分配的字段数少于格式中的字段数。如果您打算检查它,您可能会通过scanf()
的返回值检测到。
C是为系统编程设计的。它不会要求发送未经请求的运行时消息,也不会假设在发生意外输入或其他错误时应执行哪些程序。它为您提供所需的信息来指导您选择的响应,或者实际上不直接提供任何明确的响应。
在提出的程序中,您的选择是忽略错误。在发生匹配失败的情况下,如您所描述的那样,任何未被scanf()
赋值的变量都会保留其在调用scanf()
之前的值,因此忽略该错误会产生与用户输入“0 0”相同的行为。
谢谢你的解释,关于代码格式对不起,我在这里是新的,我认为这很好,我会在下次尝试更好 – rubhani
@rubhani,如果你满意,这个答案充分解决你的问题,然后考虑点击旁边的复选标记将其标记为接受的答案。这是常规的和预期的,你会选择这样的答案之一(目前,没有其他人)。 –
我只是在线之间。 –
将来,*请正确格式化您的代码*(我只是为您做了这个)。正如最初发布的,这是不可能读的。 –
另外 - 当它只有十几行代码时,可能最好不要将它称为“简单代码”,而且您无法弄清楚为什么它不起作用。 –