繁体   English   中英

C - 为什么向字符添加数字会重置为 255?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM