欢迎光临散文网 会员登陆 & 注册

C语言学习(1)关于char

2023-04-07 15:42 作者:MayTheFifteenth  | 我要投稿


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

                     刚开始学习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


C语言学习(1)关于char的评论 (共 条)

分享到微博请遵守国家法律