S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

C++中每种类型的极值?

Posted on 2010-01-04 15:58 S.l.e!ep.¢% 阅读(465) 评论(0)  编辑 收藏 引用 所属分类: C++
网上找到的一些资料,整理收集
long型最大、=   LONG_MAX   (#include   <limits.h>)   
  最小值   =   LONG_MIN   (#include   <limits.h>)   
    
  long   double的最大、LDBL_MAX   (#include   <float.h>)   
  最小值   LDBL_MIN   (#include   <float.h>)  


Visual C++ Language Reference
Data Type Ranges

For 32-bit and 64-bit compilers, Microsoft Visual C++ recognizes the types shown in the table below. Note that the following type also have unsigned forms:

  • int (unsignedint)

  • __int8 (unsigned__int8)

  • __int16 (unsigned__int16)

  • __int32 (unsigned__int32)

  • __int64 (unsigned__int64)

  • short (unsignedshort)

  • long (unsignedlong)

  • longlong (unsignedlonglong)

Type Name Bytes Other Names Range of Values

int

4

signed

–2,147,483,648 to 2,147,483,647

unsigned int

4

unsigned

0 to 4,294,967,295

__int8

1

char

–128 to 127

unsigned __int8

1

unsigned char

0 to 255

__int16

2

short, short int, signed short int

–32,768 to 32,767

unsigned __int16

2

unsigned short, unsigned short int

0 to 65,535

__int32

4

signed, signed int, int

–2,147,483,648 to 2,147,483,647

unsigned __int32

4

unsigned, unsigned int

0 to 4,294,967,295

__int64

8

long long, signed long long

–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

unsigned __int64

8

unsigned long long

0 to 18,446,744,073,709,551,615

bool

1

none

false or true

char

1

none

–128 to 127 by default

0 to 255 when compiled with /J

signed char

1

none

–128 to 127

unsigned char

1

none

0 to 255

short

2

short int, signed short int

–32,768 to 32,767

unsigned short

2

unsigned short int

0 to 65,535

long

4

long int, signed long int

–2,147,483,648 to 2,147,483,647

unsigned long

4

unsigned long int

0 to 4,294,967,295

long long

8

none (but equivalent to __int64)

–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

unsigned long long

8

none (but equivalent to unsigned __int64)

0 to 18,446,744,073,709,551,615

enum

varies

none

See Remarks.

float

4

none

3.4E +/- 38 (7 digits)

double

8

none

1.7E +/- 308 (15 digits)

long double

same as double

none

same as double

wchar_t

2

__wchar_t

0 to 65,535



#include <limits>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    cout<<"short:"<<endl;
    cout<<"min="<<numeric_limits<short>::min()<<endl;
    cout<<"max="<<numeric_limits<short>::max()<<endl;

    cout<<"int:"<<endl;
    cout<<"min="<<numeric_limits<int>::min()<<endl;
    cout<<"max="<<numeric_limits<int>::max()<<endl;

    cout<<"double:"<<endl;
    cout<<"min="<<numeric_limits<double>::min()<<endl;
    cout<<"max="<<numeric_limits<double>::max()<<endl;

    cout<<"long:"<<endl;
    cout<<"min="<<numeric_limits<long>::min()<<endl;
    cout<<"max="<<numeric_limits<long>::max()<<endl;
    return 0;
}

将极值转为字符串

#include <sstream>
#include <iostream>

  int main()
  {
    std::ostringstream stm;
    // Output an int
    stm << 31;
    // Output a char
    stm << ' ';
    // Output a double
    stm << 9.87654;

    // Retrieve the resulting string
    std::cout << stm.str() << '\n';
  }

  #include <sstream>
  #include <limits>
  #include <iostream>

  int main()
  {
     std::ostringstream stm;
     stm <<
       "Maximum value for float: " <<
       std::numeric_limits<float>::max() <<
       '\n' << "Minimum value for float: " <<
       std::numeric_limits<float>::min();

     std::string values=stm.str();
  }


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理