整数溢出是否会影响其他变量

does integer overflow affects other variable?

本文关键字:其他 变量 影响 溢出 是否 整数      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main() {
    unsigned char char_values[2] = {0, 255};
    char_values[1] += 1;
    cout << (int)char_values[0] << endl;
    cout << (int)char_values[1] << endl;
    return 0;
}

在此代码中,我期望:

1
0
因为十进制中的 255

在二进制中是 1111 1111,十进制中的 255 + 1 在二进制中是 1 0000 0000。 所以我认为char[0]会因为溢出而受到char[1]的影响,但结果是:

0
0

溢出会影响其他变量吗?

如果像 unsigned char 这样的无符号整型溢出,则结果被"截断"为该数据类型提供的位(实际上它是根据模MAX_XXX+1定义的,XXX 是重复数据类型(。因此,在"溢出"对象之前或之后对变量/内存没有影响;并且255+1256的,并且256截断到较低的有效 8 位得到0

请注意,有符号整数类型的溢出行为完全不同,即它是未定义的行为。