字符溢出

当一个字符加上一个大于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进行循环存储。

发布了4 篇原创文章 · 获赞 2 · 访问量 1173

猜你喜欢

转载自blog.csdn.net/qq_40082488/article/details/104706078