兴94 2021-11-01 21:14 采纳率: 50%
浏览 12
已结题

字符型数据与整型数据通用是什么意思?

为什么输出cChar1和cChar2结果都是a呢?

img

  • 写回答

1条回答 默认 最新

  • include_iostream_ 2021-11-01 21:55
    关注

    char是整数型,这是标准保证了的。但要注意:
    1、和其他整数型都是默认有符号不同,标准没有规定char是否有符号。如果有需要,需要显式指定signed或unsigned。
    2、char存储ASCII码的说法是错误的。标准没有规定char的字符集,不兼容ASCII的也是可以的,虽然很少见。但是特别强调:这不影响这段代码将数字字符转为数字的正确性:

    char x='5';
    printf("%d", x - '0'); // 输出一定是5
    

    这是因为,标准规定:无论char采用何种字符集,其中的数字字符的整数值必须是连续的。
    ====分割线====
    由于多数平台采用ASCII码作为char的字符集,而ASCII中字符a的编码就是97,因此输出当然是一样的。
    计算机中,所有东西都被编码为二进制序列来保存,从文本到图像再到视频,莫不如此。字符也是有编码的,这里的ASCII就是一种编码方案。当兼容ASCII的终端遇到二进制串0110 0001(也就是97的二进制形式)时,就将其解释为字符a。(字符串“97”则是:0011 1001 0011 0111)至于为什么这么编码……只能说是历史原因,没有那么多为什么。但它总得有一个编码吧——事实上,计算机内不存在任何未经编码的东西。计算机中,任何东西的处理都要经过编码-解码的过程,甚至包括数字本身(补码)。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月10日
  • 已采纳回答 11月2日
  • 创建了问题 11月1日

悬赏问题

  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 Macbookpro 连接热点正常上网,连接不了Wi-Fi。
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题