- 学习数据类型时,整数类型中有一个特殊的类型char,可以使用字符来为其赋,也可以用整数来为其赋值,这是怎么一回事?
- 其实任何类型,在计算机的内存中,在最小的存储单元比特中,内部只有0或1
- 因此计算机能完成如此复杂的工作,就是其对这些0或1的解读
- 同样道理,char类型诞生于计算机早期内存还很珍贵的时期,用最小存储单元字节,即8个比特来存储数字,并作为最小类型,几乎是天经地义的
- 但是计算机不能把东西存入就可以的了,最重要的是对这些0或1的解读
- 比如第一位是符号,也是在第2位到8位的0或1看作是小数的指数部分等
- 而char之所以诞生还有一个重要,让这些0或1转化成人类的可以读的日常符号来打印到屏幕上
- char类型的本质还是一个容量小一些的容器,无符号正整数范围是0-255,而有符号范围是-128至127
- char类型变量在赋值时,可以使用整数或字符都可以
- 如要是以字符来为其赋值,本质上是先到ASCII表把将这个字符的二进制取出存入变量中,也就是在存储过程中,只有0或1写入内存中,根本就没有任何字符
char c = 'a'
char c = 97;
- 当打印字符变量这个过程又逆转,发现内存中的存储是char类型,就到ASCII中把字符取出再打印,而不像其它类型直接打印而已
- 如果
std::cout << c + 0 << std::endl
为什么可以打印整数97,这是因为其中的0是int类型,两种不同类型,会将小类型调整为至少int类型,而int类型打印就不再需要这种查找ASCII表,找对应字符过程的