整数溢出是否会影响其他变量
does integer overflow affects other variable?
#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+1
是256
的,并且256
截断到较低的有效 8 位得到0
。
请注意,有符号整数类型的溢出行为完全不同,即它是未定义的行为。
相关文章:
- 是否可以使用其他变量为变量分配值,而无需在 C++ 中更改其值?
- 如何将几个变量复制到其他变量
- 继承构造函数和其他变量的解决方法
- 我的 c 字符串复制函数正在损坏其他变量的堆栈
- C++setenv 解析其他变量
- 整数溢出是否会影响其他变量
- 在没有其他变量的情况下替换值的程序
- 字符串流不会输出其他变量吗?
- 当与可能导致缓冲区溢出的功能一起使用时,外部变量是否比其他变量更大
- 为结构的字段赋值,也更改其他变量
- 局部变量和其他变量类型的地址存储在哪里
- 从其他变量'Copy'变量类型
- 变量赋值覆盖其他变量的值
- 如果没有其他变量,我如何获得当前职位
- 指针是否只保存指向其他变量的地址
- 基于其他变量格式化字符串
- 如何在其他变量中加入2个变量
- 如何返回PQXX连接并保存到其他变量
- 根据其他变量设置变量
- 为什么_stprintf_s会覆盖其他变量,而_stprintf不会