我正在使用gcc 4.4.7。
当我在简单逻辑(C lang)下运行时。
然后输入“ 1 2”。
int var1 = 0;
int var2 = 0;
if(!scanf("%ld %ld",&var1, &var2))
{
printf("--- ERROR\n");
}
else
{
printf("--- var1 [%ld] \n", var1);
printf("--- var2 [%ld] \n", var2);
}
结果:--- var1 [0]--- var2 [2]
我已经知道%ld在long int上有效。我真正想知道的是scanf如何详细工作。当我尝试扫描2个或更多数字时,会发生这种情况。
格式说明符%ld
用于long int
(%lld
用于long long int
。
[int
应与%d
格式说明符匹配。
此外,正如@weatherVane所评论的,不要使用!
运算符来检查scanf的返回值,而要检查预期的转换次数,例如:
if(scanf("%d %d", &var1, &var2) != 2)
printf("--- ERROR\n");