吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 328|回复: 9
收起左侧

[求助] scanf返回值的问题

[复制链接]
1andC 发表于 2025-2-28 16:23
        int a = 0;
        int b = scanf("%d", &a);
        printf("%d\n",b);
        printf("%d",a);
请各位大佬帮忙看下
当我输入0.1的时候,b=1,a=0;
a没有被赋值,即scanf没有成功获取数据,scanf的返回值是获取成功的项数,为什么这里的返回值是1?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2025-2-28 20:11
a接收到了0呀,你改成a=2试试,输入0.1,a还是等于0
无闻无问 发表于 2025-2-28 20:26
你输入0.1,虽然是小数,但被格式化成int类型,0.1格式化就是0,你输入3.14,就会是3……
tuoluo348 发表于 2025-2-28 20:49
scanf("%d", &a);
%d代表读取整数,也就是说0.1取整后为0
像楼上说的 输入3.14就会是3
scanf("%f", &a);
用%f来代表取浮点数(小数)就不会出现取整的问题了
 楼主| 1andC 发表于 2025-2-28 22:58
本帖最后由 1andC 于 2025-3-1 09:52 编辑
苏紫方璇 发表于 2025-2-28 20:11
a接收到了0呀,你改成a=2试试,输入0.1,a还是等于0

谢谢,我试了一下改成其他数字后,a还是等于零,但是下面这个代码的话,我输入0.1的话,返回值却是0
if (scanf("%d", &a) != 1)
{
        printf("请输入一个整数:\n");
        while (getchar() != '\n');
}
请问这样是什么原因呀

点评

%d你输入0.1本来就该返回值是1的,接收了1个0,所以a的值是0,返回值是1  详情 回复 发表于 2025-2-28 23:08
苏紫方璇 发表于 2025-2-28 23:08
1andC 发表于 2025-2-28 22:58
谢谢,我试了一下改成其他数字后,a还是等于零,但是下面这个代码的话,我输入0.1的话,返回值却是1
if  ...

%d你输入0.1本来就该返回值是1的,接收了1个0,所以a的值是0,返回值是1
 楼主| 1andC 发表于 2025-3-1 16:58
苏紫方璇 发表于 2025-2-28 23:08
%d你输入0.1本来就该返回值是1的,接收了1个0,所以a的值是0,返回值是1

谢谢,理解了
你好,再见 发表于 2025-3-3 10:08
哈哈,楼主可爱呢
Hello123q123a12 发表于 2025-3-14 08:46
判定为读整数
tan9p 发表于 2025-3-14 18:16
scanf是函数调用,也会有返回值,调用成功返回值是1.
所以b=scanf("%d",&a),b就是1.
缓冲区是0.1的时候,读入的是0.1,但是会按整型存,所以会存成0。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-6-20 07:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表