[英]C - Why does adding numbers to a char reset at 255?
我不确定如何自动解锁超过 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。
char
是内存中的一个字节。 所以你不能存储大于 255 的值,因为它只有 8 位(假设在你的平台上一个 char 被定义为一个 8 位的字节)。 当该值大于 255 时,它会溢出。
此外,您不知道char
是无符号的(值可以在 0 到 255 之间)还是有符号的(值可以在 -128 到 127 之间)。
如果要存储大于 255 的值,可以使用char
以外的其他类型。
char
数据类型是一个8-bit
字段,最大值为255
。 如果您希望处理大于 255 的数字,则需要使用16-bit
值。
unsigned char
的值范围为0 to 255
signed char
的值范围为-128 to 127
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.