首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >%ld %ld的扫描整数不能正常工作

%ld %ld的扫描整数不能正常工作
EN

Stack Overflow用户
提问于 2019-12-18 18:20:46
回答 1查看 858关注 0票数 1

我用的是gcc 4.4.7。

当我运行在简单逻辑(C)下时。

然后输入‘12’。

代码语言:javascript
运行
复制
 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 -- var2 2

我已经知道%ld为长int工作。我真正想知道的是,当我试图扫描2个或更多的数字时,当我试图扫描2个或更多的数字时,扫描是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-18 18:27:46

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

int应该与%d格式说明符匹配。使用不符合变量类型的格式说明符会导致未定义的行为.

不要用!操作符检查scanf的返回值,而是使用预期的转换数,如下所示:

代码语言:javascript
运行
复制
if(scanf("%d %d", &var1, &var2) != 2)
  printf("--- ERROR\n");

再读

What happens when I use the wrong format specifier?

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59398025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档