C - 为什么在255处为char重置添加数字?

时间:2016-05-13 11:50:53

标签: c char

我不确定如何自动解锁超过255的字符。

char f;
f = 'k';
printf("%d\n", f);

107中的结果。毫不奇怪。

f += 500;
printf("%d\n", f);

95中的结果。似乎这已经模数除以255。

printf("%c\n", 607);

_中的结果。还有更多的角色可以扩展到成千上万。为什么添加一个值并使char超过255会强制进行模运算?为了哈希函数,我需要超过255.

2 个答案:

答案 0 :(得分:3)

char是内存中的一个字节。所以你不能存储值> 255因为它只有8位(假设在你的平台上,char被定义为8位的字节)。当该值大于255时,它会溢出。

此外,您不知道char是无符号(值可以介于0到255之间)还是有符号(值可以介于-128和127之间)。

如果您想要存储值>您可以使用除char之外的其他类型255。

答案 1 :(得分:0)

char数据类型是8-bit字段,最大总值为255。如果您希望使用大于255的数字,则需要使用16-bit值。

unsigned char的值范围为0 to 255
signed char的值范围为-128 to 127