数据是需要被存储的,那么,什么是内存。
我们可以将内存想象成一串连续的地址(用16进制表示,类似于门牌号),每一个地址能存1个Byte的数据,一个Byte包含8个位,即8个bit, 每一位能存放一个二进制的数,即每一位能放一个0,或者是一个1。而在计算机中,数据的大小有以下单位换算关系:
1KB = 1024Byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
这些都是我们在平常使用电子设备的过程中经常使用因而熟知的单位。
有了这个基础之后,我们就可以来定义变量了。
我们定义一个整数型叫a的变量,它的值是1:
int a = 1;
这条语句的意义是:在内存中找到一片连续的存储空间,将要存储的int型的值放在里面,并且记下名字a于存储空间的首地址的关系。
从上面我们知道,变量是有类型的,接下来我们来探讨这些类别:
1.整数型:
例:
int a = 1213;
short b = 12;
long c = 12138;
整数型包含基本型(int),短整型(short/short int),长整型(long/long int),是根据其所占内存空间的大小来区分的。
在某一些计算机中:
int 32bit 4Byte
short 16bit 2Byte
long 32bit 4Byte
在这里我们发现,int型的长度和long型是一样的,因为C标准并没有具体规定各种类型所占子节数,只要求long型不短于int,short型不长于int。因此在不同的编译环境下会有一些差别,我们想知道自己使用的编译环境下各种类型所占的字节数的话,就是用sizeof()函数打印输出就行。
所有的整型都包含singed和unsigned两种,如singed int, unsigned int, 不写“signed”或者“unsigned”的话默认为所谓的signed。所谓的sign,也就是我们数学当中的正负号,singed带了正负号,所以可以用来表示负数,但是unsigned就不行了,只能用来表示正数。
带了signed 的我们通常叫做有符号数,带了unsigned的我们通常称为无符号数,有符号数专门拿出了一个位(bit)来表示正负号,而无符号数没有,所以我们能直观地感受到,多一个数字位的无符号数显然比有符号数能表示的数要大一些。
2.浮点型(实型)
例:
float a = 1.23;
double b = 1332.34435
long double c = 1435455.12138123
float 32bit 4Byte
double 64bit 8Byte
long double 64bit 8Byte
float型有一个符号位,8个整数位和23个小数位,这三种类型都是用来表示小数的,在使用时我们应该注意整数部分的大小。double的精度比float更大一些,而long double则更大,具体多少百度即可得到。
3.字符型
例:
char a = "@";
占有一个字节(程序所能操作内存的最小值)
一个字节八位,2的8次方个字符能被表示。
由于其存储方式与整数相同,所以可以与整型数据相互赋值,也可以和整数一样进行运算。
4.布尔型
例:
bool isYou = "false";
占一个字节
只有两个值,1:true, 0: false。
其实我们可以给它赋任何值,但它默认所有非零数都存1,也就是true。
除了变量之外,还有一种东西叫常量,常量在程序运行的过程中值是保持不变的,分为字面常量和符号常量,如“22”, “\n” 都是字面常量,而在变量前加一个const(constant的缩写)就能将一个变量变成一个常量,这代表在接下来的程序中你不能改变它的值了。
网友评论