如何避免整数溢出?

时间:2010-06-14 23:43:14

标签: c++ variables integer-overflow

在以下C ++代码中,32767 + 1 = -32768。

#include <iostream>
int main(){
short var = 32767;
var++;
std::cout << var;
std::cin.get();
}

有没有办法让“var”保持为32767,没有错误?

3 个答案:

答案 0 :(得分:30)

是的,有:

if (var < 32767) var++;

顺便说一句,你不应该对常量进行硬编码,而是使用numeric_limits<short>::max()头文件中定义的<limits>

您可以将此功能封装在功能模板中:

template <class T>
void increment_without_wraparound(T& value) {
   if (value < numeric_limits<T>::max())
     value++;
}

并使用它:

short var = 32767;
increment_without_wraparound(var); // pick a shorter name!

答案 1 :(得分:0)

#include <iostream> 
int main(){ 
unsigned short var = 32767; 
var++; 
std::cout << var; 
std::cin.get(); 
} 

答案 2 :(得分:0)

使用'unsigned short int'或'long int'

#include <iostream>
int main(){
long int var = 32767;
var++;
std::cout << var;
std::cin.get();
}