检测输入中的整数溢出

Mat*_*hew 0 c c++ integer overflow

在C或C++中是否有办法检查用户提供的数字是否超出整数类型的范围?

例如,让我们假设我们使用的是16位有符号整数,范围为-32768到32767.

如果用户输入55555进入程序,这将被包装成一个负数,这样如果你使用的函数可以接受任何数字,结果将是错误的.

在C或C++中是否有办法确定用户提供的数字是否在整数类型的范围内?


更新:我在一个简单的减法程序中使用数字,它接受两个数字并从第一个减去第二个数字.

hex*_*ist 5

如果你正在使用strtol它会设置errnoERANGE溢出发生的东西