freezewave 2016-09-29 13:29 采纳率: 100%
浏览 950
已采纳

【内存】关于C++cout一个很有趣也很有意义的问题

int b='a';
printf("可以输出");
cout << "下一层" << b << "下一层" << endl;
return 0;
结果是97;因为ASC码的关系,这一点大家都知道。
但当**int b;//未初始化
printf("可以输出");
cin>>b;//输入字符a
cout << "下一层" << b << "下一层" << endl;
return 0**;
结果是个无意义的值,不止是cin,连scanf也是如此,可见这是b里未初始化的数据,那么问题来了,为什么它没能
按照ASC码转成数值?它以什么形式被存,存到了哪里?

  • 写回答

2条回答 默认 最新

  • 凝视深空 2016-09-30 01:06
    关注

    把cin>>b;改成b=cin.get();或声明b为char型即可。在我的编译器上输入‘a’时输出0,我觉得还是cin的输入异常处理机制导致的。你可以参考一下这个
    http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集