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>
看一下,发现了类似于
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)