目录
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
溢出:想象一个桶,桶的容积是有限的,你装满了水以后,如何还要往里面装,那么水就溢出到地面了。
C 语言中的溢出和这个原理一样,桶的容积就表示你定义的某一数据的内存大小,往里面写入数据就表示在装水。
案例一:一个计时器,最大计 100s 的时,你让他跑了 120 秒,它就溢出了;
案例二:两个 unsignedchar,一个200,一个也是200,相加,结果也就溢出,因为 unsignedchar 最大就 255 ;
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 数组内存溢出
//@Time:2021/06/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/
#include<stdlib.h>
#include<stdio.h>
void main()
{
    unsigned char a[3] = {0};
    a[0] = 200;
    a[1] = 200;
    a[2] = a[0] + a[1]; //unsigned char 取值范围:0~255 ,超出取值范围
    printf("a:%d  b:%d c:%d\n", a[0], a[1], a[2]);
    system("pause");
}
/*
输出:
a:200  b:200 c:144
请按任意键继续. . .
*/
在C语言中unsignedchar无符号字符类型取值范围是0~255,很明显a[2]=400,超出取值范围,内存溢出!为什么a[2]=144?
当如果 unsignedchar 变量超过 255之 后,默认又继续重 0 开始计算,例如:[int](https://www.codersrc.com/archives/7409.html) 类型 和 unsignedchar类型转换:
int类型 和 unsigned char类型转换
    int     unsigned char
     254      254
     255      255
     256      0
     257      1
     258      2
     ...      ...
     399      143
     400      144
  // 400 - 255 = 144
在取值 0~255 的时候,int 和当如果 unsignedchar 一样,当超出 255 之后,当如果 unsignedchar 继续重 0 开始;
未经允许不得转载:猿说编程 ? C 语言 数组内存溢出
本文由博客 - 猿说编程 猿说编程 发布!
原文:https://www.cnblogs.com/shuopython/p/15160252.html