-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
1、改变整型变量占用的存储空间
在
64位编译器下:
short:2个字节,%hd;
short int:2个字节,%hd;
int:4个字节,%d;
long:8个字节,%ld;
long long:8个字节,%lld;
char:1个字节,%d;
通过代码计算字节的储存空间:
#include <stdio.h>
int main(){
/*
先确认二进制中最小值和最大值:举例short类型,2字节。
最大值:0111111111111111;
最小值:1000000000000000;
如何表达最大值,通过short a = 1:
1的二进制:0000000000000001;
左位移15,末位补0,即可是最小值。
由默认signed,可知最小值-1即可是最大值。
*/
short a = 1;
short min = a<<15;
short max = min - 1;
printf("min = %d\n",min);
printf("max = %d\n",max);
}
输出结果:
min = -32768
max = 32767
这样可得short类型的储存范围:-32768~32767;
同理,int储存范围:-2147483648~2147483647;等。
2、改变整型变量的符号
signed表示的是有符号的数。
unsigned标识的是无符号的数。
改变一个数的符号:把最高位原本用来标识正负,现在用来参与计算。
通过代码确定unsigned的存储范围:
#include <stdio.h>
int main(){
/*
将有符号数变成无符号数
*/
unsigned short a = 0-1;
/*
0二进制:0000000000000000
1二进制:0000000000000001
0需要向前借一位数,因此:
0-1: 1111111111111111
因此,第十六位上的1也要计算。得到最大值。
因为没有符号位,所以最小值为0.
*/
printf("%u\n",a);
}
计算结果:
65535
因此可以确定,unsigned short的存储范围是0~65535.