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


目录
相关文章
|
1月前
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
|
1月前
|
SQL 存储 关系型数据库
SQL判断CHAR类型字段不为空的方法与技巧
在SQL查询中,判断一个CHAR类型字段是否不为空是一个常见的需求
|
2月前
|
存储 Java Windows
java基础(9)数据类型中的char类型以及涉及到的转义字符
Java中的char类型可以存储一个中文字符,因为它占用两个字节。转义字符允许在代码中使用特殊字符,例如`\n`表示换行,`\t`表示制表符,`\\`表示反斜杠,`\'`表示单引号,`\"`表示双引号。可以使用`\u`后跟Unicode编码来表示特定的字符。
54 2
java基础(9)数据类型中的char类型以及涉及到的转义字符
|
1月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
2月前
|
存储 缓存 程序员
c语言的存储类型-存储类
本文详细介绍了C语言中的存储类型及其分类,包括基本类型(如整型、浮点型)和复合类型(如数组、结构体)。重点讲解了不同存储类别(`auto`、`static`、`register`、`extern`、`typedef`、`volatile`、`const`)的特点及应用场景,并展示了C11/C99引入的新关键字(如`_Alignas`、`_Atomic`等)。通过示例代码解释了每个存储类别的具体用法,帮助读者更好地理解和运用这些概念。
|
3月前
|
存储 自然语言处理 编译器
C语言中的char类型
C语言中的char类型
238 1
|
3月前
|
算法 编译器 API
C语言中的longdouble类型
C语言中的longdouble类型
|
5月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
49 0
|
5月前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
|
5月前
详细解读C++char类型函数
详细解读C++char类型函数
54 0