什么是检查长类型数据是否在int范围内的可移植方式?

时间:2012-02-21 16:18:18

标签: c++

例如:

long xx = ..;  //is xx in range of an int type?

我想到了这个问题,所以这不是一个真正的面试问题,就像你们中的一些人可能会问的那样。

基本上我想编写代码来使用<climits>进行检查,例如INT_MININT_MAX。什么是便携式,最有效的方法,如果不是不可能的话?

便携式,我的意思是它不应该是实现定义或平台相关的,例如,一个字节不总是8位。

2 个答案:

答案 0 :(得分:1)

为什么不紧张前进?

long v = 1; 
bool in_range = (int)v == v;

答案 1 :(得分:1)

#include <limits>

long xx = 5432;

if(long(numeric_limits<int>::max()) > xx)
{
    int x = static_cast<int>(xx);
    //...