c语言 字符型长度问题,概念问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 08:44:33
char c=127;
c=c+1;
问c应该等于多少,然后当c=128,129,254,255,512,65535时,c+1等于多少,我知道结果,但不知道为什么,想知道为什么得这些数,越详细越好,谢谢

字符时8位的,那么最前面的一位是符号位。
所以取值范围是:
-128--127
所以答案是:-128
也就是:10000000

c=128的时候:c+1 = -127

c = 129的时候:c+1 = -126

...

当C=255的时候,
C+1 = 100000000
此时越界了,那么C是八个字节,所以取八位:
c+1 = 0

所以大于255之后就只取低八位。
c=512
c+1 = 1
......
c=65535

c+1 = 0

你应该学习一下计算机基础,c的值就是最低的8位按照补码的数值。
另外就是c=127的127是一个int类型

关于
c=127
c=c+1

127换成二进制
0111 1111 (127)
+ 1
-------------
1000 0000 (-128)

c=255换成二进制
1111 1111 (-1)
c=254换成二进制
1111 1110 (-2)

建议你多看看基础

127时为:C_
但c值为129~254间时输出为 ?
超过254时输出为空
上面是我自己用VC6.0做出来的。

ASCII 只定义了128 个字符,其余的没有定义。是预留的。所以是打印不出来的。
(查到的,共同学习下。)

因为一个无符号字节的最大值为255,所以ascii字符编号为0-255,超出这个范围将无效,当将256赋给一个字节变量时,将导致溢出错误。