当初对着书本敲代码的时候,第一个卡住我的问题就是char是什么数据类型,盯着屏幕来回改了好几次,一会放字母一会塞数字,程序时不时报错,搞得脑袋发懵。

最开始以为它只能装看得见的文字,比如a、b或者标点符号,写了一段简单测试代码,给变量赋值写了个数字65,打印出来居然跳出大写A,那一下直接给我整糊涂了,不知道到底是字符容器,还是能存数字的东西。

翻了手头的笔记,又在编译器里反复试,才慢慢捋出来,它在底层存的本质是ASCII码,我们写的字符只是表层展示出来的样子,一个char占的空间不大,在我用的那个编译环境里是一个字节,只能容纳单个内容,不能直接丢一长串文字进去。

这只是我的个人感受,不是标准答案。

试过把两个字母塞到同一个char变量里面,编辑器直接标红提示,那时候才算记牢,它的边界就是单个字符,想要一串文字,得换别的类型,不能硬往这里塞。有时候偷懒,直接写单引号包裹的内容,双引号一不留神用上,也会出来奇怪的警告,反复踩过这个小毛病。

身边一起学写代码的朋友看法和我不太一样,他很少纠结底层的ASCII码,平时写程序就单纯把char当成专门用来接收字符的类型,只在需要做字符和数字互相转换的时候才会想起码值这件事,日常写小工具的时候,两种用法好像都能跑通,没有谁一定不对。

还有一次写判断语句,拿char变量和数字做比较,代码居然正常运行了,没有抛出异常,那时候才明白,底层存的码值让它可以和整型做运算,只是我们写代码的时候,最好分清自己当下要的是字符展示,还是数字本身的值,混在一起写很容易埋下看不见的隐患,后面排查bug会很耗时间。

不用把它想得特别复杂,我自己现在写代码,大部分场景里,就拿它存单个字母、符号,偶尔需要转换码表的时候,才会想起背后对应的数字,不会每次写都深挖底层细节,学的时候抓着太多细碎知识点,反而容易乱掉节奏。

关掉编译器的时候,屏幕上还留着那段测试转换的代码,光标停在那行赋值语句后面。

char是什么数据类型,用来存放单个字符,底层存ASCII码。