转载自https://blog.csdn.net/lingduchunge/article/details/103665800
溢出:指给某个变量赋值时,超出了该类型变量所能表达的范围,比如:
unsigned char a; a = 260;//a的取值范围是0~255,使a=260就会导致数据溢出,a最终得到的是一个错误的值;
饱和:指给某个变量赋值时,超出了该类型能表达的范围,如果采取饱和策略,就会让该变量等于一个最大值或者最小值,比如:
unsigned char a; a = 260;//a溢出了,如果采取饱和策略则a的最终结果是255
截断:指给某个变量赋值时,超出了该类型能表达的范围,如果采取截断策略,则变量只保留数据中低字节的数据,高字节的数据则会丢弃,比如
unsigned char a; a = 260;//如果采取截断策略,260 = 0x0104,则a的最终结果是4;
这里强调一下,c语言中数据发生溢出后,默认采取的是截断策略。