CodeSky 代码之空

随手记录自己的学习过程

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

2014-02-23 11:10分类: C评论: 0

题目: 编写一个程序以确定分别由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>看一下,发现了类似于

1#define SCHAR_MIN	(-128)
2#define SCHAR_MAX	127
3
4#define UCHAR_MAX	255
5

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

1#include <limits.h>
2#include <stdio.h>
3
4main(void)
5{
6    printf("signed char min:%d\n", SCHAR_MIN);
7    printf("signed char max:%d\n", SCHAR_MAX);
8    printf("int max:%d\n", INT_MAX);
9    printf("int min:%d\n", INT_MIN);
10    printf("long max:%dl\n", LONG_MAX);
11    printf("long min:%dl\n", LONG_MIN);
12    printf("short max:%d\n", SHRT_MAX);
13    printf("short min:%d\n", SHRT_MIN);
14
15    printf("unsigned char max:%u\n",UCHAR_MAX);
16    printf("unsigned int max:%u\n", UINT_MAX);
17    printf("unsigned long max:%ul\n", ULONG_MAX);
18    printf("unsigned short max:%u\n", USHRT_MAX);
19
20}
21

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

评论 (0)