编写程序,显示char,short,int,long的无符号最大取值

/*程序原理*/
/*正整数在电脑中的存储使用的二进制原码存储,而负数则是用二进制补码方式存储。补码是用原码取反再加1后获得的。例如char a = -1,由于a是char型数据类型,占一个字节,也就是八位,所以-1的原码为,10000001,最高位是符号位,负数的符号位为1。取反的结果为(符号位不变),11111110,在加1为,11111111。
因为无符号类型的整数最高位不是符号位,所以最大取值就是所有的比特位都为1,利用这个特点,可以计算出以上数据类型的正数最大取值。*/
#include <stdio.h>

int main()
{
	char a = 0;		//定义字符型变量
	long b = 0;		//定义长整型变量
	int c = 0;		//定义整型变量
	short d = 0;	//定义短整型变量
	//%u为无符号类型输出格式符
	printf("char a = %u\n",(unsigned char)(a - 1));		//无符号类型输出强制类型转换的结果
	printf("long b = %u\n",(unsigned long)(b - 1));
	printf("int c = %u\n",(unsigned int)(c - 1));
	printf("short d = %u\n ",(unsigned short)(d - 1));
	return 0;
}

/*结果为:
char a = 255
long b = 4294967295
int c = 4294967295
short = 65535
从结果可以看出,在我的电脑中,long型与int型数据类型占据的字节数是一样的,都为四个字节,32位;而char型占一个字节,八位;short型占两个字节,十六位。
*/
上一篇:10道经典java面试题_实习生必问!


下一篇:赋值运算符 +=,-=,*=,/=,%=中的细节问题