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

首先我们知道在 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) 返回的结果
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值