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()函数,参数直接选择数据的类型,输出了所有数据类型所占的字节数大小。

       

        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才是正确的做法。




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值