#1、各数据类型占用内存大小:
在C语言中我们还是要知道一下各数据类型的内存大小的,不然在运用某个类型时用错了类型造成内存空间的浪费;这时候我们只要用一串代码来运行就可以知道各类型占用的内存空间。
源代码:
#include <stdio.h>
int main()
{
//计算的是char这种类型向内存空间申请空间的话可以申请多大的空间,
//下面的也是一样的原理
printf("%d\n",sizeof(char));//1
printf("%d\n", sizeof(short));//2
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof(long));//4/8都可以
printf("%d\n", sizeof(long long));//8
printf("%d\n", sizeof(float));//4
printf("%d\n", sizeof(double));//8
return 0;
}
运行结果:
由运行结果我们得知类型char、short、int、long、long long、float、double所占用的内存空间分别是1、2、4、4、8、4、8。
这里的内存空间的单位是字节;
而1字节=8比特位。
#2、不同字节大小的区别:
我们都知道这里的字节就是内存空间的大小,那它们的区别又主要在哪里呢?
为了更好的说明,在这里我们将字节转换成比特位来表示;
我们都知道计算机语言中只用0或者1来表达,存储一个0或者1就要占用一个比特位的大小来存储,而现在我们用一个字节和两个字节来举例子来说;
一个字节就是八个比特位,一个字节可以存八个数字,比如是00000000(八个0),再有就是00000001,以此类推下去最后的一组数就是11111111,所以一个字节可以存放2的8次方个这样子的序列可以表达这么多个状态,它的最大最小范围是0~2^8-1;
同理可得两个字节的最大最小范围是0~2^16-1。
赋:(类型的作用其实就是用来在内存里申请空间,创建一个变量来申请空间。)
#3、整型细分化:
整型细分我们以整型和短整型来说;
在前面我们都知道了各类型所占用的内存大小,在运用的时候我们用合适的就好,不能太大浪费内存空间,也不能太小,太小可能表达不了某些特定的数值。
4、向内存申请空间:
我们用一个合适的类型来创造一个变量来申请空间;
源代码:
#include <stdio.h>
int main()
{
//存放年龄20
//age = 20;//这样子还不可以向内存申请空间,得怎么申请空间呢
//用short类型的变量向内存申请空间
//short age = 20;//short类型意味着向内存申请2个字节=16个比特位,用来存放年龄20
//如果是申请4个字节来存放浮点型(体重)要怎么申请呢
//float weight = 95.6;//这样子的话在编译时可能会产生警告,从“double"到“float”截断
//float weight = 95.6;//向内存申请四个字节存放小数体重95.6
//在95.6后面加一个f就可以了,这样子就变成float类型了,这样编译就不会有问题了
float weight = 95.6f;
return 0;
}
我们只是用变量名+赋值是不能申请空间的,(比如年龄age = 20;是不能申请到空间的),这时我们要用一个数据类型short创建一个变量来申请就可以了。
如果存放的是浮点型(体重含小数)的话就有这么一点点不一样;
就像源代码中这样子只是95.6的话,在编译时会产生告警,从“double”到“float”截断,如下图所示;
解决这样子的问题也不难,在95.6后面加一个f就可以了(95.6f),这样子就变成float类型了,编译起来就不会有问题。
5、long类型可申请的内存空间是4或者8字节:
主要从C语言标准规定来说呢就是:
sizeof(long)>=sizeof(int)就可以了,它只规定了大于谁谁谁就可以了,并没有说具体的数值是多少;所以可申请的空间是4\8。