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
的占位符。
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。