C语言:char与unsigned char类型数据的范围

一、char类型数据的范围

数据在内存中以补码形式存储

char范围:-128~127
补码原码值(十进制)
00000000000000000
00000001000000011
00000010000000102
00000011000000113
………………
0111111101111111127
10000000无法表示-128
1000000111111111-127
1000001011111110-126
1000001111111101-125
………………
11111111010000010-2
1111111110000001-1

 

 

 

unsigned char范围:0~255
补码原码值(十进制)
00000000000000000
00000001000000011
00000010000000102
00000011000000113
………………
0111111101111111127
1000000010000000128
1000000110000001129
………………
1111111111111111255

 二、例题详解

例1:代码如下

a[1000]数组中存放的是数据依次是:

-1 -2 -3 …… -128 127 126 …… 2 1 0 -1 -2 -3 …… -128 127 126 …… 2 1 0 ……

由于转义字符 ‘\0’ 的ASCII码值为0,strlen函数遇到 0 时会停止统计(不包括0)

因此第一个0前面一共有255个数,运行结果为255

int main()
{
    char a[1000];

    for (int i = 0; i < 1000; i++)
    {
        a[i] = -1 - i;
    }

    printf("%d\n", strlen(a));
    return 0;
}

 

例2:代码如下

unsigned char 的范围是 0~255,当 i=255 时,i++变为0,从0到255无限循环,因此程序运行结果为死循环

int main()
{
    for (unsigned char i = 0; i <= 255; i++)
    {
        printf("hello world\n");
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南林yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值