当一个字符加上一个大于256的数字的时候,其实是字符的ASCII码值加上了(一个数对256取余的结果)
下面程序是对其验证(运行在Windows10环境的的codeblocks中)
#include <stdio.h>
#include <stdlib.h>
int main()
{
char ch='a';
char tem='a';
printf("%d\n",ch);
printf("%c\n",ch);
ch+=123456;
tem+=(123456%256);
printf("123456%%256取余 %d\n",(123456%256));
printf("减去256再取余123456-256%%256 %d\n",((123456-256)%256));
printf("tem %d\n",tem);
printf("ch %d\n",ch);
ch-=(123456-256);
printf("ch %d\n",ch);
printf("ch %c\n",ch);
return 0;
}
接下来查看运行结果:
a的ASCII码值是97,对其加上123456的结果和加上123456%256的结果和123456-256%256的结果相同,运行完的结果都是-95,再对其减去取余结果和减去123456的结果是相同的 。
这也就是说验证了,字符其实不会溢出报错,它会对于大于的的数进行取余运算,他的数值也就是在0-255进行循环存储。