This commit is contained in:
许大仙 2024-08-26 09:38:44 +08:00
parent 31069c8963
commit 1fe823a4be

View File

@ -602,8 +602,13 @@ int main() {
![](./assets/3.jpg)
* 在程序中也是一样的各种整数类型在内存中占用的存储单元是不同的short 在内存中占用 2 个字节的存储单元int 在内存中占用 4 个字节的存储单元。这也就意味着,各种整数类型只能存储有限的数值,当数值过大或多小的时候,超出的部分就会被直接截掉,那么数值就不能正确的存储,我们就将这种现象就称为`溢出`overflow
* 如果达到了最大值,再进行加法计算,数据就会超过该类型能够表示的最大值,叫做`上溢出`
* 如果这个数目前是最小值,再进行减法计算, 数据就会超过该类型的最小值, 叫做`下溢出`
> [!NOTE]
>
> * 如果这个数目前是`最大值`,再进行`加法`计算,数据就会超过该类型能够表示的最大值,叫做`上溢出`(如果最大值 + 1 会“绕回”到最小值)。
> * 如果这个数目前是`最小值`,再进行`减法`计算,数据就会超过该类型能够表示的最小值, 叫做`下溢出`(如果最小值 - 1 会“绕回”到最大值)。
>
> 在 C 语言中,程序产生数值溢出的时候,并不会引起错误而自动停止,是因为计算机直接按照二进制补码的运算规则进行处理;但是,这可能会导致不可预料的后果。因此,编程时要特别注意避免数值溢出,特别是在涉及大数或小数的运算时。
### 1.3.2 无符号数的取值范围