首先我们知道在 C/C++ 中,char类型大小为1字节,即8bit。
每一个bit位可以存0和1两个数字,8个bit位一共有 2^8 种排列方法,即区间 [00000000, 11111111]
如果是 unsigned char 的话,表示出来的数据取值范围是 [0, 255]
如果是有符号的 char,取值范围是 [-128,127]
分析一段代码
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) 返回的结果