整数类型
C语言中用来表示数据是变量和常量,
变量是能变化的值
整数变量
int
short
long
unsigned
编程最小的单位 位bit
使用最多单位的最小的 字节byte
字 = 4 字节
双字 = 8 字节 较为基础的数量单位
四种类型表示的大小范围各不同
计算机想要存取数据 必须告诉计算机在哪个内存地址中存储 , 存储的时候存储多大。
根据存储单位的不同,分成了4种
int 32位
short 16 位
long 32位 (windows) longlong 64位
unsigned 无符号 前置符,
short<=int<=long
程序实例
int main() (不要写void main, main 有返回值)
{
int x ;
在内存的某块区域找到内存地址,并且将内存地址之后的32个地址单元占据,里面存储属于x的内容。
声明后只是拥有了空间
x=10 ; 往内存空间写入数据;
x=010;
x=0x7fffffff;
int y = x; 访问 内存 ;
找到可用的内存 ,指定内存地址,分配4byte属于变量Y ;
找到x的内存空间的地址,读取32位的内存,解析出x的值,然后把这个值放在y变量指向的内存空间当中所占用的32位 4byte空间中。
操作变量是在操作一个集合,综合体
printf(“%d”,x);打印需要stdio.h
getchar();
return 0 ;
}
内存中存的值都是一样的,会根据程序不同的解析方式呈现出不同的结果。
printf 应该选择合适的占位符 ;
使用short 会比 int 占用更多的资源 , 在输出的时候会先转换成int。
练习
1.使用正确的占位符打印出int, long, longlong的最大值和最小值(有符号)
int a = 0x7FFFFFFF;
long b = 0x7FFFFFFF;
long long c = 0x7FFFFFFFFFFFFFFF;
printf("int 型最大值:%d\n",a);
printf("int 型最小值:%d\n",a+1);
printf("long 型最大值:%ld\n",b);
printf("long 型最小值:%ld\n",b+1);
printf("long long 型最大值:%lld\n",c);
printf("long long 型最小值:%lld\n",c+1);
结论 int ==long
2.请写出一个16进制的溢出有符号和无符号的long型
printf("long 型最大值:%ld\n", b);
printf("溢出long最大值%%ld型:%ld\n", b + 1);
printf("溢出long最大值%%u型:%u\n", b + 1);
结论:对同一块内容,两种不同的输出方式产生了不同的结果,说明解析数据的方式不同,同一块内存所呈现的数据也不同
3.-12345在无符号int中的值为多少
int d = -12345;
printf("-12345在无符号int中的值为%u\n", d);
直接使用%u得到无符号的值