C语言unsigned char、char与int之间的转换

本文通过两个示例展示了char和unsigned char类型的取值范围及其在C++中的表现形式。当char类型的变量赋值为-1时,输出为-1;而unsigned char类型的变量赋值为-1时,输出则为255。这说明了有符号和无符号字符类型在处理负数时的不同行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先来看一道题:

char c1 =-1;

cout<< (int)c1 << endl;

输出为:-1

unsigned char c2 = -1;

cout << (

int)c2 << endl;

输出为:255




参考博客:点击打开链接

### C语言 `unsigned char` 类型详解 #### 定义特性 在C语言中,`unsigned char` 是一种无符号字符类型。这种数据类型的取值范围是从0到255[^1]。这意味着它可以存储任何介于这两个数值之间的整数,包括边界值本身。 #### 存储大小 通常情况下,在大多数平台上,`unsigned char` 占用一个字节(8位)的空间来保存其值。这使得它非常适合用于处理单个ASCII字符或其他占用较少空间的数据单元。 #### 自增操作行为 对于定义为 `unsigned char` 的变量执行自增运算时,如果当前值达到最大限即255,则再次增加会使其回绕至最小可能的值也就是零,并继续向上计数直到下一次溢出发生为止。例如下面这段代码展示了这种情况下的无限循环现象: ```c #include <stdio.h> int main() { for (unsigned char i = 0; i <= 255; ++i) { printf("%u ", i); } } ``` 此程序将打印从0到255的一系列数字并不断重复这一过程,形成所谓的“死循环”。这是因为当`i`等于255之后再加一时,由于它是无符号类型所以不会触发有符号溢出异常而是简单地回到起点重新开始计算[^2]。 #### 声明方式 可以像声明其他基本数据类型一样轻松地声明 `unsigned char` 变量: ```c unsigned char myUnsignedCharVariable; ``` 也可以初始化赋初值给该类别的对象如下所示: ```c unsigned char firstLetterOfAlphabet = 'A'; // ASCII code point corresponding to letter A. ``` 此外还可以通过指针指向此类别内存地址的方式来进行间接访问或修改内容: ```c const unsigned char* pointerToConstantData; unsigned char array[] = "example string"; pointerToConstantData = &array[0]; ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值