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

标签 c char

我不知道如何自动解锁超过 255 个字符。

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

结果为107。不足为奇。

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

结果为95。看起来它已除以 255。

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

结果为_。还有更多的字符也达到数千个。为什么添加一个值并使字符超过 255 会强制进行模运算?为了哈希函数,我需要超过 255。

最佳答案

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

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

如果您想存储大于 255 的值,可以使用 char 以外的其他类型。

关于C - 为什么向字符添加数字会重置为 255?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209362/

相关文章:

c - 确定流是否已满缓冲

c - C中的结构前向声明

c++ - 类型 "const char *"的参数与类型 "char *"的参数不兼容

java - 如何通过在java中逐个字符添加字符数组来创建字符串

java - 计算字符串中字符的频率(Java,性能)

c - 使用 strdup 进入 malloc 保留空间

发生自定义错误时关闭服务器(套接字)

c - 链表 vector 无法正常工作

字符串指针数组中的 C char qsort

php - %cd 在 ajax 到 php 调用中转换为 Í