【发布时间】:2010-06-14 23:43:14
【问题描述】:
在以下 C++ 代码中,32767 + 1 = -32768。
#include <iostream>
int main(){
short var = 32767;
var++;
std::cout << var;
std::cin.get();
}
有什么方法可以让“var”保留为 32767,而不会出错?
【问题讨论】:
-
你知道这里发生了什么吗?您已经达到整数(短)的上限,因此再添加一个会将符号翻转为整数的最大负数。
-
如果你想要一个不同的模式,整数不会自动环绕,它不存在,抱歉。
-
这让我想起了我为什么要can't sleep。 :-)
-
这称为saturation arithmetic。这可能非常不合逻辑,因此请注意。什么是 32767+1-1?
标签: c++ variables integer-overflow