C语言中整型与字符型数据的转换表示问题?

gtaerchina 2010-10-27 10:18:29
int n;

scanf("%d",&n);
printf("%c = %d\n",n,n);
return 0;

当我输入 65 输出结果为 A = 65
当我输入 A 输出结果就很诡异了。不明白为什么会这样?


我记得 整型 和字符型变量可以互相转换呀!
...全文
172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
djvc 2010-10-27
  • 打赏
  • 举报
回复
MSDN 解释

Both scanf and wscanf return the number of fields converted and assigned; the return value does not include fields that were read but not assigned.

A return value of 0 indicates that no fields were assigned.

The return value is EOF for an error or if the end-of-file character or the end-of-string character is encountered in the first attempt to read a character.

注意一下scanf的返回值,看是不是等于1,如果不是,表示有错误无法转换相应格式。你输入A,scanf执行失败了,n没有赋值,是一个随机值。
AI应用技术 2010-10-27
  • 打赏
  • 举报
回复

[Quote=引用 1 楼 eclipse_2 的回复:]
是可以转换
但是出错是在这句scanf("%d",&n);
需要输入的是int 你输入的是char 类型不匹配
无法获取正常的值
[/Quote]
++
Soulic 2010-10-27
  • 打赏
  • 举报
回复
对的,因为%d只支持数字,你输入'A'不是它的表示范围
小魔菇 2010-10-27
  • 打赏
  • 举报
回复
是可以转换
但是出错是在这句scanf("%d",&n);
需要输入的是int 你输入的是char 类型不匹配
无法获取正常的值

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧