C中scanf的问题

程序:……语句1:unsignedchara,b;……语句2:printf("inputa:");语句3:scanf("%d",&a);语句4:printf("input... 程序:
……
语句1:unsigned char a,b;
……
语句2:printf("input a:");
语句3:scanf("%d",&a);
语句4:printf("input b:");
语句5:scanf("%d",&b);
……

输入a,b分别为1,22
当执行完语句5时,发现a值为0

是因为整型-unsigned char型转换时,冲掉了后面的16位吗?
还是什么原因?
……
展开
 我来答
xptlbx
2007-01-19 · TA获得超过1677个赞
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:0
展开全部
这种问题是使用C语言时最容易出现,也最不容易排除的。关键在于格式符与变量类型不匹配。既然变量是字符型,不可以用%d直接进行输入,而必须再定义一个整型临时变量输入,然后用赋值语句进行显式转换!
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
laos052
2007-01-19
知道答主
回答量:31
采纳率:0%
帮助的人:17.8万
展开全部
不应该输入: 1,22
应: 1 (回车键)再输入 22
这是c语言scanf()函数的特点.可以看潭浩强的书,里面有详细的介绍
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b87df9823
2007-01-19 · TA获得超过120个赞
知道小有建树答主
回答量:193
采纳率:0%
帮助的人:98.8万
展开全部
scanf("%d",&a);
改为 scanf("%c",&a); 就应该可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友434ca83
2007-01-25
知道答主
回答量:19
采纳率:0%
帮助的人:20.9万
展开全部
若输入1,22的话一定会出错的,正确的输入是1 22
还可能输入不匹配,改
scanf("%s",&a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式