0

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

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

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

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


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

4

4 回答 4

5

如果您使用类似的东西,如果发生溢出,strtol它将设置errnoERANGE

于 2012-10-17T15:44:20.820 回答
3

如果用户在程序中输入55555,这将被包装成负数

不总是。这取决于您如何阅读数字。operator>>例如,如果您使用 ,该值将不会被包装,它将被拒绝。

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

在 C++ 中,只需使用operator>>

#include <iostream>
int main() {
  signed short int i;
  std::cin >> i;
  if(std::cin)
    std::cout << "You entered a valid number!\n";
  else
    std::cout << "Aw c'mon, play by the rules.\n";
}
于 2012-10-17T15:44:07.793 回答
0

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

这取决于您使用的是什么功能(strtol例如可以这样做)。检查文档。

于 2012-10-17T15:45:23.100 回答
0

The only difference between int's and uint's is how INTERPRET them. Your problem has no solution, if it so critical for you consider switching to floating point argument, checking value and typecasting. Update: I thought you want run time check function argument value provided by another programmer, not console input.

于 2012-10-17T16:10:18.450 回答