C 编写程序确定各种类型变量取值范围

题目:

编写一个程序以确定分别由signed和unsigned限定的char、short、int与long类型变量的取值范围。

书中说用两种,暂时只会一种,另一种说是用位运算符,难度系数就略高了……

我的输出是:

signed char min:-128
signed char max:127
int max:2147483647
int min:-2147483648
long max:2147483647l
long min:-2147483648l
short max:32767
short min:-32768
unsigned char max:255
unsigned int max:4294967295
unsigned long max:4294967295l
unsigned short max:65535

具体是要取决于你的编译器的,这里以code::blocks为例而已。关于这点,见C 变量与常量 数据类型

首先我们进<limits.h>看一下,发现了类似于

#define SCHAR_MIN    (-128)
#define SCHAR_MAX    127

#define UCHAR_MAX    255

我们要调用的就是它,其实感觉有点像include()之类的效果,直接在程序中引入头文件以此调用就行了。

#include <limits.h>
#include <stdio.h>

main(void)
{
    printf("signed char min:%d\n", SCHAR_MIN);
    printf("signed char max:%d\n", SCHAR_MAX);
    printf("int max:%d\n", INT_MAX);
    printf("int min:%d\n", INT_MIN);
    printf("long max:%dl\n", LONG_MAX);
    printf("long min:%dl\n", LONG_MIN);
    printf("short max:%d\n", SHRT_MAX);
    printf("short min:%d\n", SHRT_MIN);

    printf("unsigned char max:%u\n",UCHAR_MAX);
    printf("unsigned int max:%u\n", UINT_MAX);
    printf("unsigned long max:%ul\n", ULONG_MAX);
    printf("unsigned short max:%u\n", USHRT_MAX);

}

这里当时遇到了一个问题printf("unsigned int max:%u\n", UINT_MAX);如果我用的是%d,输出会是-1,明显不符合常理,然后看了一眼答案,这个东西他似乎还没有介绍到,但可想而知这是unsigned的占位符。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 成品, 源码, 题目

添加新评论