【C语言】char类型的取值范围

简介: 首先我们知道在 C/C++ 中,char类型大小为1字节,即8bit。

首先我们知道在 C/C++ 中,char类型大小为1字节,即8bit。


每一个bit位可以存0和1两个数字,8个bit位一共有 2^8 种排列方法,即区间 [00000000, 11111111]


ce55ea68360c4ff7b206c158ef0c85ee.png

如果是 unsigned char 的话,表示出来的数据取值范围是 [0, 255]


4dd20e1c27b74010a994521b11c437e1.png

如果是有符号的 char,取值范围是 [-128,127]

ee7dfab18fa3419292835cad13d35c12.png



分析一段代码


int main()
{
  char a[1000];
  int i;
  for (i = 0; i < 1000; ++i)
  {
  a[i] = -1 - i;
  }
  printf("%d\n", strlen(a));
  return 0;
}


最终输出结果为 255,我们来分析一下为什么


首先要知道 strlen 的作用是输出字符串中 ‘/0’ 之前的字符的个数

‘\0’ 的ASCLL码是数字0

分析存入 a 的所有字符的ASCLL码,看存入第一个0之前有多少个字符

[-1, -2 … -128, 127, 126 … 0, -1, -2 …],统计得到第一个 0 之前有 255 个字符,就是 strlen(a) 返回的结果



相关文章
|
1月前
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
|
1月前
|
SQL 存储 关系型数据库
SQL判断CHAR类型字段不为空的方法与技巧
在SQL查询中,判断一个CHAR类型字段是否不为空是一个常见的需求
|
2月前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
56 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
1月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
2月前
|
存储 缓存 程序员
c语言的存储类型-存储类
本文详细介绍了C语言中的存储类型及其分类,包括基本类型(如整型、浮点型)和复合类型(如数组、结构体)。重点讲解了不同存储类别(`auto`、`static`、`register`、`extern`、`typedef`、`volatile`、`const`)的特点及应用场景,并展示了C11/C99引入的新关键字(如`_Alignas`、`_Atomic`等)。通过示例代码解释了每个存储类别的具体用法,帮助读者更好地理解和运用这些概念。
|
3月前
|
存储 自然语言处理 编译器
C语言中的char类型
C语言中的char类型
239 1
|
3月前
|
算法 编译器 API
C语言中的longdouble类型
C语言中的longdouble类型
|
5月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
49 0
|
5月前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
|
5月前
详细解读C++char类型函数
详细解读C++char类型函数
56 0