整形大小和取值范围
short、int、long、long long
数据类型 | 占用空间 |
---|---|
short(短整型) | 2字节 |
int(整型) | 4字节 |
long(长整型) | Windows4字节,Linux位4字节(32位),8字节(64位) |
long long(长长整型) | 8字节 |
注意
整形数据在内存占的字节数应用于所选的操作系统有关。虽然c语言标准中没有明确规定整型数据的长度,但是long类型不能短于int类型,short类型整数的长度不能长于int类型。
当一个小的数据类型复制给一个大的数据类型,不会出错,因为编译器会自动转化。但是。相反,那末就可能丢失高位
#include<stdio.h>
int main()
{
//整型变量
int a=10;
//短整型变量
int b=20;
//长整形变量
long c=30;
//长长整形变量
long long d=40;
printf("%d\n",a);
//占位符 表示输出一个短整型数据
printf("%hd\n",b);
//占位符 表示输出一个长整型数据
printf("%ld\n",c);
//占位符 表示输出一个长长整形数据
printf("%lld\n",d);
//sizeof 计算数据类型在内存中占的字节(BYTE)大小
//sizeof(数据类型) sizeof(变量名)
unsigned int len=sizeof(int);
//printf("%d\n",len);
//1B=8bit
printf("整型%d\n",sizeof(a));//4字节
printf("短整型%d\n",sizeof(b));//2字节
printf("长整型%d\n",sizeof(c));//4字节
printf("长长整型%d\n",sizeof(d));//8字节
//里面可以写表达式
//short<=int<=long<long long
return 0;
}
sizeof 关键字
siezof不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位位字节
siezof的返回值位size_t
size_t的类型在32位操作系统下是unsigned int,是一个无符号的整数
size_t 的别名unsigned int
字符转化的规则
1汉字=2字节
1(Byte)=8字位=8个二进制数字
1B=1b
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
每次转化1024,是因为1024=2的10次方