- 问题
数据类型的本质差异是什么?
为什么会有不同的表示范围?
如上图,每一个变量都表示的范围不同,字节也随之不同
C语言中的sizeof关键字
功能:用于获取类型或者变量所占用的内存大小(字节)
用法:
sizeof(type) int main()
{
sizeof(variable) int s = sizeof (short);
int v = sizeof s
sizeof variable return 0 ;
}
实践操作
数据类型与内存
- 不同的数据类型(变量)会占用不同大小的内存
- 同一种整形的有符号与无符号版本占用相同内存
类型 占用内存
char 1
short 2
int 3
float 4
double 5
- 下面的程序输出什么?
int main()
{
unsigned u=0;
char c=0;
int i=0;
unsigned short us=0;
printf("sizeof(u)=%d\n",sizeof(u));
printf("sizeof(c)=%d\n",sizeof(c));
printf("sizeof(i)=%d\n",sizeof(i));
printf("sizeof(us)=%d\n",sizeof(us));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(unsigned char)=%d\n",sizeof(unsigned char));
printf("sizeof(short)=%d\n",sizeof(short));
return 0;
}
- C语言的中的奇葩整形(long)
- long在使用不同编译器时,可能占用的内存不同
- long通常占用4字节内存,也可能占用8字节内存
- long long表示整形,固定占用8字节内存
- long long是long long int 的缩写形式
- 实践操作
下面的程序输出什么?
int main()
{
double d=0;
float f=0;
long l=0;
long long ll=0 ;
printf("sizeof(d)=%d\n",sizeof(d)); //8
printf("sizeof(f)=%d\n",sizeof(f)); //4
printf("sizeof(l)=%d\n",sizeof(l)); //4or8
printf("sizeof(ll)=%d\n",sizeof(ll)); //8
数据类型的本质区别
- 因为占用的内存大小不同,所以可表示的范围不同
- 不同类型的数据,在内存中使用不同的表示法
如:
正整数和负整数的表示法不同
整数和浮点数的表示法不同
小结
- 不同的数据类型,占用不同大小的内存
- 不同的数据类型对于数据的表示法不同
- sizeof关键字用于获取类型或变量占用的内存字节数
- long是一种奇葩的整形,占用4字节或者8字节
- long long是在一个占用8字节内存的整型