C语言学习(1)关于char

文章讲述了C语言中char类型变量的存储机制,包括有符号和无符号的取值范围。在有符号情况下,char的取值从-128到127。当尝试给char变量赋值128时,由于超出范围,系统将其转换为补码10000000,输出时转换回原码,显示为-128。
摘要由CSDN通过智能技术生成

 /*************************************************************************************************************

                     刚开始学习C语言,仅代表自己的学习理解,不代表观点一定正确

                                                              只做学习记录

                                                     有错误的麻烦指出,谢谢!

**************************************************************************************************************/

char字符型变量在C语言中占用一个字节。由于1字节=8bit,一比特等于一个二进制。

故char得到的二进制为0000 0000 ~ 1111 1111  一共表示256种状态(2^8)

———————————————————————————————————————————

在C语言中char可以表示有符号和无符号两种情况

其中无符号时char取值范围为0~255   地址为0000 0000 - 1111 1111

有符号时 八位二进制的最高位变成符号位,后七位为数据位  正负相加共256种状态

故在有符号的情况下,正数地址为0000 0000 —0111 1111

负数地址为1000 0000 — 1111 1111

而当地址为0000 0000时,表示为0

当地址为1000 0000时,表示为-0,又因为0并没有正负的区别,且满足char所占的1bit,所以C语言规定将值-128赋予1000 0000

当地址为1000 0000时它的值为-128.

所以signed char 的取值范围为-128~127

———————————————————————————————————————————

在C语言编辑软件中,当你输入char = 128时,输出却为-128

char型为什么输入128结果输出-128呢??

由表可以看出

 

当输入是128时,系统认为输入是一个正数,而正数的补码等于它的原码

则会将128的补码1000 0000储存到你所定义的变量中。

当你要用到它时,系统又会将补码转变回原码输出。

而补码是1000 0000则输出的原码则也是1000 0000,故输出-128

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值