带有%ld%ld的scanf整数无法正常工作

问题描述 投票:0回答:1

我正在使用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个或更多数字时,会发生这种情况。

c gcc scanf
1个回答
0
投票

格式说明符%ld用于long int%lld用于long long int

[int应与%d格式说明符匹配。

此外,正如@weatherVane所评论的,不要使用!运算符来检查scanf的返回值,而要检查预期的转换次数,例如:

if(scanf("%d %d", &var1, &var2) != 2)
  printf("--- ERROR\n");
© www.soinside.com 2019 - 2024. All rights reserved.