C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有255个字符吗)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有255个字符吗)相关的知识,希望对你有一定的参考价值。

C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有255个字符吗),还是表示一个字符的最大长度是255。

如果只用一个char变量只能表示256个字符,但实际上你还可以用两个或两个以上的char变量表示更多的字符
像是汉字,一般一个汉字要占用用两个字节以上的空间,所以表示它的时候要用两个或者两个以上char类型变量来表示它,比如:
char a[]="你好";,这个字符数组长度应该为5(这里的汉字用两个字节表示),因为有两个汉字,一共四个字节,加上结束符'\0',一共要5个字节。
参考技术A char字符型的取值范围是0-255.
不是最大的长度是255.是最后一个字符用自然数也就是10进制数255来表示.

计算机只有255+1个字符.刚开始的零还得在加一了.因为是0-255;
参考技术B char的取值范围是0~255,因为char是一个字节,即8个bit。8个bit的最大值就是255。
计算机中255个单字符难道还不够吗?英文字母才26个,区分大小写才52个,阿拉伯数字也只有10个。
参考技术C 字符型表示的只是单个字符,也就是ASCII码,基本的并不多,只有96个。128以后的是扩展字符,前32个是控制字符。总共256个字符,不是255,还有个0号不要忘记了。

数据类型取值范围计算

之前一直不清楚数据类型的取值范围是怎么计算的,现在弄懂了,记录一下。

char型示例

signed char类型取值范围计算1

假设一个字符型变量占用一个字节,也就是8个二进制位(bit),由于是signed,所以最高为可以为1(负数)或0(正数)。

  • 当最高位为1时,能表示的范围是【1000 0000】-【1111 1111】。然后按照二进制转十进制的规则计算,二进制“1000 0000”将8bit全部取反,变成“0111 1111”,再加上1变成“1000 0000”,此时按照无符号数来计算,其十进制为128,加上负号变为-128。“1111 1111”根据相同规则转换为十进制数-1。其取值范围为【-128,-1】。
  • 当最高位为0时,能表示的范围是【0000 0000】-【0111 1111】。二进制“0000 0000”的十进制为0,“0111 1111”的十进制为“(2^{6})+(2^{5})+(2^{4})+(2^{3})+(2^{2})+(2^{1})+(2^{0}) = 127,因此符号位为0时,其取值范围为【0,127】。

结合两种情况,整个signed char类型的取值范围为【-128,127】。

unsigned char类型取值范围计算

unsigned是无符号的,所以它能表示的范围是【0000 0000】-【1111 1111】,将范围转化为十进制数为【0,255】。

其他类型

其他类型以此类推。

Reference



  1. https://zhuanlan.zhihu.com/p/25755257?

以上是关于C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有255个字符吗)的主要内容,如果未能解决你的问题,请参考以下文章

C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有255个字符吗)

C语言,char字符型的取值范围是0-255,表示的是只有255字符(难道计算机只有255个字符吗)

C语言中字符变量数值取值范围。

char类型的取值范围是

C语言中怎么计算一个类型的取值范围?如 char 用程序算

char类型为啥只能存储0-255