and*_*oke 11
计算机中的所有东西都是二进制的.所以C中的字符串是二进制值序列.显然,这对人类没有多大用处,因此制定了各种标准,人们决定哪些数值代表某些字母.在ASCII中,值65表示字母A.因此存储的值为65,但是每个人都知道(因为他们已经读取了ASCII规范)该值对应于字母A.
例如,如果我正在编写代码以在屏幕上显示文本,并且我收到值65,我知道设置某些像素并删除其他像素,以便像素排列如下:
@
@ @
@@@@@
@ @
@ @
Run Code Online (Sandbox Code Playgroud)
在任何时候我的代码"都不知道"是"A".它只知道65显示为该模式.因为,正如您所说,您不能直接存储字母,只能存储二进制数字.
这只是一个'定义'.ASCII定义整数值和字符之间的关系.对于实现,有一个表(你看不到它)进行这种翻译.
编辑: 计算机只需0/1.字符的流只是一堆0/1流:0110010101 ...有一个合同人与计算机之间:8位被表示为字符(行,有Unicode的,UTF-8和等).并且,'A'是65,依此类推.
在C/C++和任何其他语言中,字符串只是像整数数组一样处理.只有当您需要显示字符串时,才会将这些数字"翻译"为字符.此转换由硬件或软件完成:
您可以在任何地方看到这种合同或定义.例如,汇编代码.你的程序最终将被翻译成机器代码:这也只是一堆0和1.但是,当只显示0和1时,很难理解.所以,有一个规则:比如101010表示"添加",1100表示"mov".这就是为什么我们可以编程像"添加eax,1",它最终会被解码为0/1s.