2018-7-16 2-1 分别由signed 和unsigned 限定的 char,short,int,long类型变量的取值范围

#include<stdio.h>
#include<limits.h>
#define debug1 0  //使用debug1  必须包含limits.h
#define debug2 1
main()
{
	
	

#if debug1
	//signed types
	printf("signed char min = %d \n",SCHAR_MIN);
	printf("signed char max = %d \n",SCHAR_MAX);
	printf("signed short min = %d \n",SHRT_MIN);
	printf("signed short max = %d \n",SHRT_MAX);
	printf("signed int min = %d \n",INT_MIN);
	printf("signed int max = %d \n",INT_MAX);
	printf("signed long min = %ld \n",LONG_MIN);
	printf("signed long max = %ld \n",LONG_MAX);

	//unsigned types
	printf("unsigned char char max = %u \n",UCHAR_MAX);
	printf("unsigned char short max = %u \n",USHRT_MAX);
	printf("unsigned char int max = %u \n",UINT_MAX);
	printf("unsigned char long max = %lu \n",ULONG_MAX);
#endif

#if debug2
	/* 
				    ~0 :  数字0 的各个二进制位全部转换为1
		    (unsigned char)~0  :  将结果转换为unsigned char 类型
		(unsigned short )~0>>1 :  右移一位 清除符号位
	(char)((unsigned char )~0>>1)) :  将其转换为char型
	*/
	//signed types
	printf("signed char min = %d \n",-(char)((unsigned char )~0>>1));
	printf("signed char max = %d \n",(char)((unsigned char )~0>>1));
	printf("signed short min = %d \n",-(short)((unsigned short )~0>>1));
	printf("signed short max = %d \n",(short)((unsigned short )~0>>1));
	printf("signed int min = %d \n",-(int)((unsigned int )~0>>1));
	printf("signed int max = %d \n",(int)((unsigned int )~0>>1));
	printf("signed long min = %ld \n",-(long)((unsigned int )~0>>1));
	printf("signed long max = %ld \n",(long)((unsigned long )~0>>1));

	//unsigned types
	printf("unsigned char char max = %u \n",(unsigned char )~0);
	printf("unsigned char short max = %u \n",(unsigned short )~0);
	printf("unsigned char int max = %u \n",(unsigned int )~0);
	printf("unsigned char long max = %lu \n",(unsigned int )~0);
#endif

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值