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 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?