#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
溢出会影响其他变量吗?
答案 0 :(得分:5)
如果unsigned char
之类的无符号整数类型溢出,则结果为&#34;截断&#34;到该数据类型提供的位(实际上它是以模MAX_XXX+1
的形式定义的,其中XXX是重复数据类型)。因此,在&#34;溢出&#34;之前或之后对变量/存储器没有影响。宾语; 255+1
为256
,256
被截断为较低有效8位,为0
。
请注意,有符号整数类型的溢出行为完全不同,即它是未定义的行为。