您的位置:首页 > 编程语言 > C语言/C++

C++基础数据类型小结

2017-03-26 11:46 169 查看
      偶感自己C++学的真是菜,打算从头来过,再进行深入学习。废话不多说,现在就让我们聊一聊今天的主题:C++基础数据类型。

      有一句话想必大家都听过:“程序 = 算法 + 数据结构”。姑且不管算法,也不管啥叫数据结构。只断章取义看“数据”

二字,大家应该能感觉到程序是要和数据打交道的。于是自然要有相应机制来存储,组织,和操作这些数据。那么首先

我们要了解的就是数据类型。

       所谓数据类型,嗯~~就是数据的类型。也就是要把不同的数据进行分类。分类这种事在现实生活中有太多实例。举一个简单不违和的:学生,在这里我们按年级来分。于是有幼儿园,小学生,初中生,高中生,大学生~~。完了之后

我们还要确认一下每个年级学生的特性。拿小学生来说:1,体积小,座位不用太大;2,未成年,不能早恋;3,单纯,知识面窄,可以忽悠。

       现在你大概可以感性认知下面这俩句话:

       1. “在C++程序里,每个名字都有一个与之相关联的类型,这个类型决定的可以对这个名字应用什么样的操作(即这个名字所指向的实体),并决定这些操作将如何做出解释”。

       2. “数据类型是程序的基础:它告诉我们数据的意义以及我们能在数据上执行的操作。”

        具体一点,当你确定了一个数据的类型,就相当于告诉电脑要用多大内存空间存放这个数据,以及这个数据能参与哪些操作。重点是内存空间和操作。

        好了,进入高潮。C++基本数据类型。

        一,什么叫“基本”?

        之所以基本,当然是它们比较简单,单元。另外在这些基本类型的基础上,我们还可以引申出其他类型,甚至每个程序员自己定义的类型。不过注意,是在这些基本类型的基础上。这也反映出这些基本类型是定制好的,可被编译器识别的,不是自己在家造的。因此,基本数据类型又常被叫做基本内置类型

         二,唠叨半天了, 到底有哪些?

         哈哈。基本数据类型可分为:算术类型和空类型(注:很多地方并不把空类型当做基本数据类型,本人采用的是C++ primer 5 上的分类方式。)

         空类型代表一个空值,也就是没有值。0是一个值,不为空。不理解没关系,用用就明白了。

         算术类型分为整型,浮点型(实型),字符型和布尔型

       (一)

         先来看看整型:例如我们要写一个求年级学生数的程序,假设年级有m = 5各班,平均每班有n = 50个学生;

那么首先得把数据存入程序,我们会用到如下语句:

              int m, n;

              m = 5;

              n = 50;

这里“ = ”是赋值的意思,相当于把 5 存入 m,把 50 存入 n。重点在第一句 int m, n;  意思告诉计算机 我要用到俩个数据,分别叫m,n,它们的类型是 int 型,你看着给它们分配内存吧。

          没错,int 是一个“关键字”,它用于声明数据的类型为 int 型。int 为一种整型,相应的整型按占用内存大小排序有 short, int, long, long long,代表整数。

          为什么要划分这么多类型的整数呢,不都是整数吗?这里我们就开始接触到以后会常常碰到的问题。那就是计算机资源。计算机资源主要划分俩类,空间资源和时间资源。这里我们主要涉及空间资源。我的计算机内存只有4GB

看着貌似很多,但随便跑个游戏就变蜗牛。空间资源如何节省呢?最基本的:多大范围内的数,我就给多大空间。例如年龄:范围 0 - 1000应该对99.99%的人适用吧。那我就不该给年龄分配能装1000000这么大的数的空间。

          所以这几个类型的整数分别对应了不同大小的内存空间。究竟是多大呢?这个有点“麻烦”。C++11标准并没有明确定义基本数据类型长度,只是规定了类型的最小尺寸。short 16bit,  int  16bit, long  32bit,   long long 64bit。同时它允许编译器赋予这些类型更大的尺寸。你可能要问为什么,我会再单独写一篇讨论一下这类问题。

          另外对于整型,还分为有符号和无符号类型。分别用signed 和 unsigned 表示。例如 unsigned int   a;表示a 是一个无符号int型。这有什么用呢? 其实也是充分利用资源的一种方式。整数分为负整数和非负整数。对于前面说的年龄,肯定没有负的。如果用有符号类型,表示的范围至少为 - 1000 - 1000。要 11bit空间 来表示。然而 -1000 - -1的年龄根本没有意义。采用无符号类型只需表示0 -
1000,只要10bit。

       (二)

          浮点型,又叫实型。关于浮点运算我会单独再搞一篇。现在我们知道数除了整数,还有实数。你可能会吐槽说

“嘿,整数不是实数的子集吗?”但在计算机里他俩可以说是没有交集的,也就是说没有一个数据既是整数,又是浮点数。这是因为他们的编码方式是不同的,如果你学过大计基,应该知道整数一般采用补码表示,而浮点数采IEEE754标准。不扯远,这里我们要知道 浮点数分为 单精度(float),双精度(double),扩展精度(long double)C++11标准规定其最小尺寸分别为:6,10,10位有效数字。注意这里是有效数字,而不是bit。

       (三)

          字符型。即存储字符的类型。有char,  wchat_t,  char16_t,  char32_t。尺寸最小为 8,16,16,32bit。

其中wchat_t为扩展字符型,char16_t, char32_t为Unicode服务,我们再聊。这里char 也分为 signed 和unsigned 

俩类。简单点说,char和整型值是相同的,即可直接给char类型赋整型值,也可把字符型值赋给整型。这里我们不做深入探究。

       (四)

           布尔型(bool)。终于说到最后一个基本类型了。C++11最小尺寸未定义。为什么呢?这根布尔型的特性有关。bool值只有俩个:0,1(false, true).

        今天唠叨这么多,感觉自己没掌握好局面。毕竟我不是出书的,写的太详细不可能,也浪费时间。以后我应该不会说这些大家翻书就能找的的东西,更多的是某一方面需要注意的细节和经验吧。同时还有一些在学习中容易忽略但又十分重要的东西,以及自己在学习中遇到的疑惑的正解。哈哈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: