C 语言 char 是占几个字节 多少位?

问题描述

在C Primer Plus这本书中产生几个疑问,原文内容大概如下:
字节是计算机常用的存储单位,对于所有的机器,1字节均为8位,这是字节标准定义,至少在衡量存储单位是这样的(但是,C 语言对此不同的定义)一般而言 C 语言会保证 char类型足够大,以储存系统(实现C语言的系统)的基本字符集.

我的疑问是char 在C中一定是8位? char 与 byte 什么关系?

期待的结果是给出结论同时给出参考内容,以及思考过程,这比结论更有价值.

阅读 19.4k
2 个回答
  1. 标准规定char最少8位
  2. 而且一般就是8位,POSIX也要求char必须是8位
  3. 你当然可以实现一个c编译器,将char实现为16位或更多,但是相应的其他整数类型也要调整,而且这样一来与POSIX标准也不再兼容
  4. 所以一般没人这么干
  5. 所以一般把char当成8位来用不会有什么问题,特殊情况下为了保险起见可以检查CHAR_BIT

结论:Char 在C中一般占8位,C标准中并没有定义char是具体的多少位,只是定义char的长度是一个字节.

char的bits长度可以在limit.h中的CHAR_BIT获取,而且这个CHAR_BIT是可配置的.(也就是说买某种特殊情况下CHAR_BIT 根据机器而不是8)

byte 一般与 char 一般相同

byte
addressable unit of data storage large enough to hold any member of the basic character set of the execution environment
character
single-byte character
<C> bit representation that fits in a byte

个人认为char长度和字符集编码相关.

[参考2] :https://stackoverflow.com/que...
[参考1] :https://en.wikipedia.org/wiki...
[参考2] :http://www.open-std.org/jtc1/...
[参考2] :https://stackoverflow.com/que...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题