为什么输出cChar1和cChar2结果都是a呢?
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)至于为什么这么编码……只能说是历史原因,没有那么多为什么。但它总得有一个编码吧——事实上,计算机内不存在任何未经编码的东西。计算机中,任何东西的处理都要经过编码-解码的过程,甚至包括数字本身(补码)。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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无法与虚拟机通讯的问题