整数溢出会影响其他变量吗?

时间:2018-01-22 15:28:51

标签: c++ integer-overflow

#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

溢出会影响其他变量吗?

1 个答案:

答案 0 :(得分:5)

如果unsigned char之类的无符号整数类型溢出,则结果为&#34;截断&#34;到该数据类型提供的位(实际上它是以模MAX_XXX+1的形式定义的,其中XXX是重复数据类型)。因此,在&#34;溢出&#34;之前或之后对变量/存储器没有影响。宾语; 255+1256256被截断为较低有效8位,为0

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