| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3413 人关注过本帖
标题:如何编写代码求得自己系统上int,char,long等基本类型的最大值和最小值?
只看楼主 加入收藏
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:13 
如何编写代码求得自己系统上int,char,long等基本类型的最大值和最小值?
如题,请指教。
搜索更多相关主题的帖子: 最大值 long 
2011-03-09 21:03
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
#include <iostream>
这是我找的答案,仅供参考


#include <limits>
#include <typeinfo>

template<typename T>
struct Type {
   static void print() {
      std::cout << typeid(T).name() << ": range is ("
                << std::numeric_limits<T>::min() << ", "
                << std::numeric_limits<T>::max() << ")\n";
   }
};

int main() {
   Type<char>::print();
   Type<short>::print();
   Type<int>::print();
   Type<long>::print();
   Type<float>::print();
   Type<double>::print();
   Type<long double>::print(); // Some compilers will not handle this one well
   Type<unsigned>::print();
   system("pause");
   return 0;
}



输出如下:
c: range is (
2011-03-09 22:13
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
输出是:

c: range is (
2011-03-09 22:15
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 

输出如下:
关于c的那行有点问题,抱歉啊!

s: range is (-32768, 32767)
i: range is (-2147483648, 2147483647)
l: range is (-2147483648, 2147483647)
f: range is (1.17549e-038, 3.40282e+038)
d: range is (2.22507e-308, 1.79769e+308)
e: range is (0, 1.#INF)
j: range is (0, 4294967295)
2011-03-09 22:16
新手写程序
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:120
注 册:2011-3-5
收藏
得分:4 
c的话是有个头文件的
<limits.h>
有一些类型的最大值最小值
程序代码:
#  define SCHAR_MIN    (-128)
#  define SCHAR_MAX    127

/* Maximum value an `unsigned char' can hold.  (Minimum is 0.)  */
#  define UCHAR_MAX    255

/* Minimum and maximum values a `char' can hold.  */
#  ifdef __CHAR_UNSIGNED__
#   define CHAR_MIN    0
#   define CHAR_MAX    UCHAR_MAX
#  else
#   define CHAR_MIN    SCHAR_MIN
#   define CHAR_MAX    SCHAR_MAX
#  endif

/* Minimum and maximum values a `signed short int' can hold.  */
#  define SHRT_MIN    (-32768)
#  define SHRT_MAX    32767

/* Maximum value an `unsigned short int' can hold.  (Minimum is 0.)  */
#  define USHRT_MAX    65535

/* Minimum and maximum values a `signed int' can hold.  */
#  define INT_MIN    (-INT_MAX - 1)
#  define INT_MAX    2147483647

/* Maximum value an `unsigned int' can hold.  (Minimum is 0.)  */
#  define UINT_MAX    4294967295U

/* Minimum and maximum values a `signed long int' can hold.  */
#  if __WORDSIZE == 64
#   define LONG_MAX    9223372036854775807L
#  else
#   define LONG_MAX    2147483647L
#  endif
#  define LONG_MIN    (-LONG_MAX - 1L)

/* Maximum value an `unsigned long int' can hold.  (Minimum is 0.)  */
#  if __WORDSIZE == 64
#   define ULONG_MAX    18446744073709551615UL
#  else
#   define ULONG_MAX    4294967295UL
#  endif

#  ifdef __USE_ISOC99

/* Minimum and maximum values a `signed long long int' can hold.  */
#   define LLONG_MAX    9223372036854775807LL
#   define LLONG_MIN    (-LLONG_MAX - 1LL)

/* Maximum value an `unsigned long long int' can hold.  (Minimum is 0.)  */
#   define ULLONG_MAX    18446744073709551615ULL
#include <stdio.h>
#include <climits.h>

int main(){
    printf("CHAR_BIT   = %d\n", CHAR_BIT);
    printf("SCHAR_MIN  = %d\n", SCHAR_MIN);
    printf("SCHAR_MAX  = %d\n", SCHAR_MAX);
    printf("UCHAR_MAX  = %d\n", UCHAR_MAX);
    printf("CHAR_MIN   = %d\n", CHAR_MIN);
    printf("CHAR_MAX   = %d\n", CHAR_MAX);
    printf("MB_LEN_MAX = %d\n", MB_LEN_MAX);
    printf("SHRT_MIN   = %d\n", SHRT_MIN);
    printf("SHRT_MAX   = %d\n", SHRT_MAX);
    printf("USHRT_MAX  = %u\n", USHRT_MAX);
    printf("INT_MIN    = %d\n", INT_MIN);
    printf("INT_MAX    = %d\n", INT_MAX);
    printf("UINT_MAX   = %u\n", UINT_MAX);
    printf("LONG_MIN   = %ld\n", LONG_MIN);
    printf("LONG_MAX   = %ld\n", LONG_MAX);
    printf("ULONG_MAX  = %lu\n", ULONG_MAX);
    printf("LLONG_MIN  = %lld\n", LLONG_MIN);
    printf("LLONG_MAX  = %lld\n", LLONG_MAX);
    printf("ULLONG_MAX = %llu\n", ULLONG_MAX);
    return 0;
}


[ 本帖最后由 新手写程序 于 2011-3-9 23:26 编辑 ]
2011-03-09 23:07
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
#include <climit.h>

在Dev-C++上运行时会报错
2011-03-09 23:40
新手写程序
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:120
注 册:2011-3-5
收藏
得分:0 
是limits.h
2011-03-09 23:44
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:4 
不同的编译器得出的结果未尽相同吧(只是猜测)

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-09 23:50
gukai1991
Rank: 2
等 级:论坛游民
帖 子:19
专家分:51
注 册:2011-2-19
收藏
得分:4 
#include <stdio.h>
#include <conio.h>

void main()
{
        int a=1;
    int *p;
    p=&a;
    printf("%d  %d",p,p++);
    getch();
}
如果输出的两个数字相差2,则说明你的int是16位的;
相差4,int就似乎32位的
然后你用计算器按一下算出最大值、最小值吧
2011-03-09 23:51
新手写程序
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:120
注 册:2011-3-5
收藏
得分:0 
应该是的一般还是符合ansi的规范吧 有的细节可能不同
同编译器有关
同系统也有关吧32  64的
2011-03-09 23:53
快速回复:如何编写代码求得自己系统上int,char,long等基本类型的最大值和最小值 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028891 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved