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

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

一、char类型数据的范围


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


char范围:-128~127

补码 原码 值(十进制)

00000000 00000000 0

00000001 00000001 1

00000010 00000010 2

00000011 00000011 3

…… …… ……

01111111 01111111 127

10000000 无法表示 -128

10000001 11111111 -127

10000010 11111110 -126

10000011 11111101 -125

…… …… ……

111111110 10000010 -2

11111111 10000001 -1




unsigned char范围:0~255

补码 原码 值(十进制)

00000000 00000000 0

00000001 00000001 1

00000010 00000010 2

00000011 00000011 3

…… …… ……

01111111 01111111 127

10000000 10000000 128

10000001 10000001 129

…… …… ……

11111111 11111111 255

二、例题详解


例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;
}


目录
相关文章
|
2月前
|
存储 编译器 C语言
【C语言】判断字符类型的三种方法
【C语言】判断字符类型的三种方法
79 0
|
2月前
|
存储 C语言
C语言变量类型
C语言变量类型
|
2月前
|
机器学习/深度学习 编译器 C语言
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
24 0
|
7天前
|
存储 编译器 C语言
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
C语言基础知识:数据在内存中的存储解析(整数,浮点数)
|
9天前
|
存储 C语言
C语言中定义结构体类型变量的深入探索
C语言中定义结构体类型变量的深入探索
8 0
|
9天前
|
C++
【C++】std::string 转换成非const类型 char* 的三种方法记录
【C++】std::string 转换成非const类型 char* 的三种方法记录
5 0
|
9天前
|
C语言
深入理解C语言中的printf函数及数据输出
深入理解C语言中的printf函数及数据输出
14 0
|
16天前
|
C语言
多组数据的输入方法(c语言实现)
多组数据的输入方法(c语言实现)
|
1月前
|
C语言
C语言三角形类型判断
C语言三角形类型判断
|
2月前
|
存储 编译器 程序员
【C语言】整形数据和浮点型数据在内存中的存储
【C语言】整形数据和浮点型数据在内存中的存储
16 0