免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8233 | 回复: 9
打印 上一主题 下一主题

怎样测试自已电脑上字符(char)的范围有多大 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-05-24 14:47 |只看该作者 |倒序浏览
怎样测试自已电脑上字符(char)的范围有多大,有哪些不同的整型类型,它们的范围是多大,还有浮点数呢..

这是一道作业题,我无从下手,希望大家指点一下,也不一定要贴代码..谢谢

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-05-24 14:51 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

numeric_limits<unsigned long long>;::max();

论坛徽章:
0
3 [报告]
发表于 2005-05-24 14:56 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

任意一本关于的c教程应该都有吧

  1. maxUchar = pow(2, (8*sizeof(char))) - 1;
复制代码


则unsigned char的范围为:
0~maxUchar
整型有:
int
short
long
long long(c99)
unsigned int
unsigned short
unsigned long
unsigned long long(c99)

范围同理求取

论坛徽章:
0
4 [报告]
发表于 2005-05-24 14:57 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

[quote]原帖由 "THEBEST"]numeric_limits<unsigned long long>;::max();[/quote 发表:


谢谢,不过没看懂,我知道char要么是-127至127,或者0至255但是怎样才能测出来呢,是有函数直接可以查到他的范围呢,还是通过溢出等等来确定呢,

long>;::max(); 两个冒号是什么意思,谢谢

论坛徽章:
0
5 [报告]
发表于 2005-05-24 15:04 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

谢谢,我现在试,,我现在看的这本书,把他作为作业题出来,当然就不会有例子计算了,,呵呵

论坛徽章:
0
6 [报告]
发表于 2005-05-24 15:45 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

maxUchar = pow(2, (8*sizeof(char))) - 1;

这个只能说明char的范围是255,并不能确定他就是从0至255,还是-127至127吧,,,因为我试了一下用sizeof(signed char),结果也是255啊

论坛徽章:
0
7 [报告]
发表于 2005-05-24 16:21 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

原帖由 "ccf" 发表:
maxUchar = pow(2, (8*sizeof(char))) - 1;

这个只能说明char的范围是255,并不能确定他就是从0至255,还是-127至127吧,,,因为我试了一下用sizeof(signed char),结果也是255啊


不好意思未考虑到这一点。
各种数据类型的范围是与编译器有关,不是与电脑有关,要用什么编译器,最简单的方法是查看其include文件夹中limits.h头文件中对各种数据类型的宏定义即可。
如TC2.0中:
#define CHAR_BIT                        8

#if (((int)((char)0x80)) < 0)
#define CHAR_MAX                        0x7F
#define CHAR_MIN                        0x80
#else
#define CHAR_MAX                        0xFFU
#define CHAR_MIN                        0x00
#endif

#define SCHAR_MAX                       0x7F
#define SCHAR_MIN                        -128
#define UCHAR_MAX                0xFFU

#define SHRT_MAX                        0x7FFF
#define SHRT_MIN                        ((int)0x8000)
#define USHRT_MAX                0xFFFFU

#define INT_MAX                        0x7FFF
#define INT_MIN                        ((int)0x8000)
#define UINT_MAX                        0xFFFFU

#define LONG_MAX                        0x7FFFFFFFL
#define LONG_MIN                        ((long)0x80000000L)
#define ULONG_MAX                0xFFFFFFFFU


至于浮点型则要看float.h了
TC2.0中
#define FLT_RADIX                        2
#define FLT_ROUNDS                        1
#define FLT_GUARD                                        1
#define FLT_NORMALIZE                        1

#define DBL_DIG                                15
#define FLT_DIG                                6
#define LDBL_DIG                                       19

#define DBL_MANT_DIG                        53
#define FLT_MANT_DIG                        24
#define LDBL_MANT_DIG                        64

#define DBL_EPSILON                        2.2204460492503131E-16
#define FLT_EPSILON                        1.19209290E-07F
#define LDBL_EPSILON                        1.084202172485504E-19

/* smallest positive IEEE normal numbers */
#define DBL_MIN                                2.2250738585072014E-308
#define FLT_MIN                                1.17549435E-38F
#define LDBL_MIN                                _tiny_ldble

#define DBL_MAX                                       _huge_dble
#define FLT_MAX                                       _huge_flt
#define LDBL_MAX                                       _huge_ldble

#define DBL_MAX_EXP                        +1024
#define FLT_MAX_EXP                        +128
#define LDBL_MAX_EXP                        +16384

#define DBL_MAX_10_EXP                        +308
#define FLT_MAX_10_EXP                        +38
#define LDBL_MAX_10_EXP                        +4932

#define DBL_MIN_10_EXP                        -307
#define FLT_MIN_10_EXP                        -37
#define LDBL_MIN_10_EXP                        -4931

#define DBL_MIN_EXP                        -1021
#define FLT_MIN_EXP                        -125
#define LDBL_MIN_EXP                        -16381

论坛徽章:
0
8 [报告]
发表于 2005-05-24 16:27 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

谢谢,是编译器决定的,,书上也是这么说,,我把机器硬件和编译器理解一个概念了,,,我查查看

论坛徽章:
0
9 [报告]
发表于 2005-05-25 10:55 |只看该作者

怎样测试自已电脑上字符(char)的范围有多大

char c=0;
int max=-1000,min=1000;

for(int i=0;i<256;i++)
{
    if(c >; max)
        max = c;
   if(c<min)
       min = c;
   c++;
}

printf("max = %d,min = %d\n",max,min);

这段代码可以求出最大最小值

论坛徽章:
0
10 [报告]
发表于 2015-01-10 21:09 |只看该作者
        直接上代码
     char c=1,max,min;
        while(1){
                min=c;
                if(c<0){
                                printf("%d-%d",min,max);
                                break;
                }
       
                else{
                                max=c;
                                c++;
                }

        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP