• 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

    1. int main()
    2. {
    3. char a[1000];
    4. for (int i = 0; i < 1000; i++)
    5. {
    6. a[i] = -1 - i;
    7. }
    8. printf("%d\n", strlen(a));
    9. return 0;
    10. }

     

    例2:代码如下

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

    1. int main()
    2. {
    3. for (unsigned char i = 0; i <= 255; i++)
    4. {
    5. printf("hello world\n");
    6. }
    7. return 0;
    8. }
  • 相关阅读:
    Java类和对象(2)
    Vue_02 快速入门 基础语法02
    CMAKE学习
    OpenWrt之package: Using Dependencies
    野生程序员的成长之路(续)--团队需要什么样的管理者?
    GenAI的“关键一跃”:推理与知识
    windows环境下node安装教程(超详细)
    bat脚本学习(一)
    【云原生--Kubernetes】安全机制
    unix多进程多线程
  • 原文地址:https://blog.csdn.net/2301_76197086/article/details/132850995