在此简单代码中,
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d %d",&a,&b);
printf("\nThe value of a is : %d",a);
printf("\nThe value of b is : %d",b);
}
当我输入错误的值类型作为输入时,变量b总是被赋值为1。我尝试添加另一个变量“ c”并在代码末尾打印其值,但是仍然始终将变量“ b”分配给1。为什么?
如果返回不成功,则scanf()
后的scanf()
参数的值不确定,但是最可能的行为是保持不变。在这种情况下,b
未初始化,因此可以具有任何值,而与scanf()
的行为无关。
考虑:
#include <stdio.h>
int main(void)
{
int a = -1, b = -1;
scanf("%d %d",&a,&b);
printf("\nThe value of a is : %d",a);
printf("\nThe value of b is : %d",b);
return 0 ;
}
在这种情况下,我希望a
和b
都具有输入值或-1,如果转换失败-即使实际上不是必需的。
scanf()
返回转换和分配的参数数量。考虑:
#include <stdio.h>
int main(void)
{
int a = 0, b = 0;
int convert = scanf("%d %d",&a,&b) ;
if( convert > 0 )
{
printf("\nThe value of a is : %d",a);
if( convert > 1 )
{
printf("\nThe value of b is : %d",b);
}
else
{
printf("\nThe value of b is undefined" );
}
}
else
{
printf("\nThe value of a is undefined" );
}
return 0 ;
}
对于您的测试输入54test hello
,它输出:
45测试你好a的值是:45b的值不确定