百科问答小站 logo
百科问答小站 font logo



C/C++基本数据类型里面为什么没有byte呢? 第1页

  

user avatar   wzsayiie 网友的相关建议: 
      

如果题主以后读C、C++标准文档的话,会发现这个看似比较怪异的地方:

在“运算符 - sizeof”一节中提及,char类型为最小的长度单元,需保证:

           sizeof(unsigned char) == 1     sizeof(char) == 1     

而在“类型 - char”一节又规定到:char至少需要有8个二进制位,如此可以包含1个符号位和7位ASCII码。

以当下的眼光看,这种的描述很奇怪。因为直接说一个char为8个二进制位不就好了嘛。

实际上8个二进制位为一个“字节”这种约定俗成的概念出现得很晚,得到普遍认同已经是上世纪80年代后期的事了。很长一段时期内,谈及计算机“位宽”(bit width),只说“字长”(word),而没有现在意义上的“字节”(byte)概念;在7位ASCII码普及(上世纪70年代)以前,软硬件上曾使用过很多6位字符编码(题主可以在维基百科上搜索“6bit character code”这个词条),正由于这个原因,80年代以前大量计算机的位宽是6,而不是8的倍数,比如当年Ken Thompson和Dennis Ritchie使用的PDP-7就是18位的机器。那时,char的实现版本是9位,不是今天广为人知的8位。

现在,C/C++中“char”就是“byte”,成为事实上的标准;就像当年“8个二进制位是一字节”的约定一样。




  

相关话题

  为什么大多数解释器都将AST转化成字节码再用虚拟机执行,而不是直接解释AST? 
  网上有对于C++编程要避免使用cin、cout、fstream;而是使用scanf、printf、FILE *的说法, 请问是正确的吗? 
  为什么程序员要使用三元运算符而不是显式写出 if 语句? 
  为什么 Python 的 GIL 问题一直让人诟病,Python 社区却不解决? 
  将编程语言中的英文替换成中文并将其完善为一门国人普遍接受的编程语言,需要哪些条件? 
  可不可以用文言文再创造一种编程语言? 
  如何解决windows上用fwrite()向文件写入内容时末尾的 问题? 
  未来会不会出现这样的编程语言? 
  用c#开发桌面应用,如何做出漂亮的界面? 
  如何评价 Fortran 语言热度的回升? 

前一个讨论
都说孩子哭的时候不要说话,陪着他,让他哭个够,这样他就不会形成哭闹的习惯。这些小孩现在怎么样了?
下一个讨论
怎么看待,在医院,医生回复患者是某种疾病的可能性:发生了就是百分百,没发生就是零。这种说法?





© 2025-03-12 - tinynew.org. All Rights Reserved.
© 2025-03-12 - tinynew.org. 保留所有权利