天天看点

Lesson 2:基本数据类型

        在学习数据类型之前,需要了解一个基础知识,计算机的内存由位(bit)组成,每一位都表示一个二进制数0或1。在存储单位中,1GB = 2^10MB = 2^20KB = 2^30Byte = 2^33bit。         一、数据的分类、大小和初始化         1、字符型:char         2、布尔型:bool         3、整形:有short,int,long,long long四种         4、浮点型:float,double,long double三种        对于每种类型所占的字节数是和操作系统的位数直接联系的,不同位数的操作系统对应的字节数是不同的。我是64位的操作系统,利用sizeof()函数,参数直接选择数据的类型,输出了所有数据类型所占的字节数大小。

Lesson 2:基本数据类型

        4、取值范围         如果该类型的数据占有n个字节,那么就有m个位,其中m = 4 x n:         对于有符号数(signed),最高位为符号位,1表示负数,0表示正数。取值范围为 -2^(m-1) ~ 2^(m-1) - 1。         对于无符号数(unsigned),取值范围为 0 ~ 2^m - 1。

        5、初始化         C语言初始化可以直接用“=”给变量赋值,在C++中新增了用括号初始化,形式上有点像初始化列表,例如:

int num1(100);
int num2{200};
int num3{};
           

        如果花括号中没有值,那么默认初始化为0。         如果变量没有初始化,那么会CPU会给该变量分配一个随机值,范围在该类型数据的取值范围内。         如果取值超过了该数据类型的取值范围,那么就会返回一个边界值。

        二、#define和const         1、例如 #define MAX 10         和#include一样,是一个预处理器编译指令。该编译指令告诉预处理器,在程序中来查找MAX,并且将所有的MAX都替换为10,修改后的程序将在这些变量的值替换后被编译。         2、例如 const int MAX = 10         const限定符,一个const常量的值是不允许被修改的,声明const变量时可以将变量名开头字母大写,或者将整体大写,以表示这是一个常量。         总体来说,使用const限定符比使用#define指令要更好,一方面指出了数据的类型,另一方面是在作用域规则和复杂类型中有更多的好处,这个会在之后介绍。

        三、char 和bool         1、char字符其实也就是和ASC码相对应,计算机只能识别二进制数而不能识别符号。比如输入一个字符 ’a‘,在通过cin输入时,就被转化为了65,计算机就是依次来存储a,输出时,通过cout识别该变量为char类型,那么就将65转化为a来输出。同时字符之间也是可以比较大小,可以直接将字符当做对应的数字来用。         2、bool类型取值为true和false,也就是对应为1和0。这里有一个容易想当然的地方,给一个bool变量用数字赋值时,如果赋为0的话,则该变量为false,如果是非0的话,则该变量为true,而不是用是否小于0来区分。                 四、类型转换         在类型转换中有个原则就是:低一级数一定可以转换为高一级数,而高一级数不一定能转换成低一级数(有可能会造成精度丢失)。         转换的方法有很多,比如用花括号来表示一个非该变量类型的值,在这里我只记一下强制转换:         (typename) value         typename (value)         这两句的意义一样都是把value值转换为typename类型。

        另外,C语言中有一个关键字auto,用于定义一个变量,而用auto来替代该变量的变量类型,那么编译器会根据初始值的类型来推断变量的类型。但是,这种做法会导致误会,例如如果想申明一个double变量,然而初始值是0的话,那么会编译器会将其自动识别为int整型,而不是double,需要初始为0.0才是正确的做法。

继续阅读