最近复习C++相关内容,决定在这里记录自己复习的过程。 以前写过部分文字,但是没有坚持连续写,因此学完后

基本又忘光啦,主要是没有实践,这一次决定自学完后,在这里在复习一遍增强自己的记忆和理解程度。

一、基本内置类型

  C++语言内置了一些数据类型,主要有两大类: 整型和浮点型。

整型又有:  bool型、char型、wchar_t型、short型,int型,long int型。

浮点型有: float型, double型、long double型(扩展双精度型)。

  我们知道不同的数据类型决定了不同的内存占用bit和可以进行的操作。

1、bool型

  bool型是C++语言扩展的类型,在C语言里面是没有bool类型的,其取值为两个值: false 和 true。

值得注意的是:bool类型的两个取值都是用小写的字母表示的,这一点需要注意。

  在C++中如果一个bool型的对象取值为 false,就表示逻辑结果为假; 如果bool型对象的取值为true

就表示逻辑结果为真。

Exp:

bool  bVar;
bVar = false; if(bVar)
{
std::cout<<"It is true"<<std::endl;
}
else
{
std::cout<<"It is false"<<std::endl;
}

  这样就会执行 else分支的语句,输出: It is false。

  C++继承了C语言的特性: 如果一个表达式的值为零,则逻辑结果为假; 如果一个表达式的值非零,则逻辑结果

为真。

要点1:  在C++中有些表达式其逻辑结果可能不是那么容易判定为0还是非0, 这样就很难判定其逻辑结果的真假,

需要引起注意。

  例如:  std::cin<<x;   如果输入流读到文件的结尾,那么返回逻辑结果就为假, 如果还没有读到文件的结尾,那么

其返回结果就为真。

  要点2: bool类型变量在内存中需要1个字节表示。

  bool型变量可以进行与、或、非的逻辑运算,这些在运算符的时候讨论。

2、字符型

  C++提供两种不同位宽的字符型类型:char、wchar_t

  char型占用8bit, wchar_t占用16bit(用于表示宽字符集的字符)。

  char型字符字面值是用单引号引起来的字符,如:

       'A',  'b', '"'(双引号)。

  wchar_t型字符字面值也是用单引号引起来的字符,但是需要在前面加上字幕L, 如:

      L'B',   L'C', L'b',  L'"'(双引号)。

  C++和C语言一样提供了一些其他的方式来表示字符字面值。 主要有三种方式: 利用8进制的数字来表示

字符字面值、利用16进制的数字表示字符字面值、转义字符序列。

  A: 8进制表示字符字面值

  用反斜杠后面跟上8进制数字表示字符字面值, 如

    \7   响铃符   、  \12  换行符 、  \40 空格符等

  B:16进制表示字符字面值

  反斜杠后面跟上x或者X,然后在跟上16进制数字表示字符字面值, 如:

    \x7   响铃符、   \xC  换行符、   \x28 空格符等

  C:转义字符序列

  在C++语言中,有些字符具有特殊的意义,就不能用单引号来表示,例如不可打印字符、反斜杠、控制字符、

单引号、双引号、疑问号、换行符、水平制表符、垂直制表符、回车符、进纸符等。

  \n  换行符

  \t  水平制表符

   \t  垂直制表符

  \b  退格控制符

  \r  回车符

  \f      进纸符

  \a  报警符,响铃符

  \\  反斜杠

  \?  疑问符

  \'  单引号

  \"  双引号

3、整数型

  short  int、 int、和 long int型 。其中short int 、long int 可以省略int,用 short 和long表示。

    short: 最小占用16bit

    int:最小占用16bit

    long:最小占用32bit

  这这三种类型占用的位宽由系统决定, 而且目前一般int是 32bit宽度, 因此在设计程序的时候,不能

假设占用的bit数,而要用sizeof 操作符来求解占用的位宽。

  整数型的字面值有三种表示方式: 十进制、八进制、十六进制。

  例如:    20           十进制

       024         八进制 ,前面用前导0开始表示这是一个八进制整数字面值

         0x14      十六进制,前面用前导0x或者0X开始表示这是一个十六进制整数字面值。

  整数型数有正数和负数之分;  能表示大于、小于和等于0的整数型称为有符号整型,用signed表示;

不能表示小于0的整数类型为无符号型(表示的数大于或者等于0),用unsigned表示。

  默认整数字面值是有符号的int型,   可以在整数字面值后面加上修饰的字符改变整数字面值的类型。

可以添加的修饰符有: u/U 、  l/L .  例如:

    20u:  无符号int型,

    20L: 有符号长整型

   20UL: 无符号长整型

要注意的是: 整数字面值没有short类型,这个需要注意。

4、字符串字面值

  连续的字符序列在C++中有一个叫法: 字符串字面值。 字符串字面值就是用双引号括起来的连续字符序列。

Exp:

  字符串:  "I am a C++ fresh man"

    上面就是一个字符串字面值。

  C++的字符串字面值继承了C语言的特性,会自动在字符串的字符序列后面加上一个 '\0' 的字符,因此在

内存中会多占用1个字节。

  对于wchar_t 类型的字符串字面值同样会占用对一个字符需要的空间,就是: 2byte。

   字符串中有一个特别需要注意的字符就是: %,这个字符需要引起大家的注意。

如果你是调用C语言的标准库printf()函数输出的话,那么在输出"%%" 时只会输

出一个 %; 而如果用cout的话,则会输出两个 %%。

  要点: 字符串字面值的连接,  两个以空格、制表符、换行符分隔的两个字符串字面值会连接成一个字符串字面值。

例如:

  std::cout<<"abcdefg"

        "12345678"

        "volcanol";

  这个输出就相当于:

    std::cout<<"abcdefg""12345678""volcanol";

  也相当于:

    std::cout<<"abcdefg12345678volcanol";

  这个是比较特殊的一个特性,在C语言中也可以这样,一般用的比较少。

5、浮点型

  浮点型有三种: float、double和long double。三种类型的区别是占用的有效位数不一样。

float       32bit, 有效位为6位小数

   double    64bit, 有效位为10位小数

   long        64bit, 最小有效位为10位小数

  浮点型字面值有两种表示方法: 十进制和科学计数法。

     1.     十进制的double型字面值

     1.e0  科学计数法的double型字面值。

  默认的浮点数字面值为double类型。如果要显示的设置为float型,就需要在字面值后面加上一个f或者F。

例如:

    3.14F,  2.f   都是float型的浮点型字面值。

  要点:  也许大家注意到了上面的1.  和 2.f   , 这里如果出现了小数点,即使后面没有小数那么也是浮点型

数据,这一点通常大家可能会遗忘。

  暂时说这么多,待续......

C++_系列自学课程_第_3_课_变量和基本类型_《C++ Primer 第四版》的更多相关文章

  1. C++_系列自学课程_第_7_课_数组_《C++ Primer 第四版》

    说到数组,大家应该都很熟悉,在C.Pascal.Java等语言中,都有数组的概念.在C++中也提供了对数组的支持.数组简单来说就是一堆相同 数据类型对象的集合. 这里要把握住两个要点: 相同的数据类型 ...

  2. C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》

    在C语言中要对一个整数的某一个位进行操作需要用到很多的技巧.这种情况在C++里面通过标准库提供的一个抽象数据类型 bitset得到了改善. 一.标准库bitset类型 1.bitset的作用 bits ...

  3. C++_系列自学课程_第_5_课_vector容器_《C++ Primer 第四版》

    再一次遇到 vector 这个单词; 每一次见到这个单词都感觉这个单词非常的 "高大上"; 数字遇到vector马上就可以360度旋转: 当 "电" 遇到vec ...

  4. C++_系列自学课程_第_12_课_结构体

    #include <iostream> #include <string> using namespace std; struct CDAccount { double bal ...

  5. C++_系列自学课程_第_12_课_语句_《C++ Primer 第四版》

    前面的文章说完了表达式和类型转换的部分内容,在我参考的书里面,接下来讨论的是各种语句,包括:顺序语句.声明语句.复合语句(块语句).语句作用域 .if语句.while语句.for语句.do...whi ...

  6. C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》

    上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...

  7. C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》

    程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一 ...

  8. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》

    前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...

  9. C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》

    C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效 ...

随机推荐

  1. .Net程序员面试所需要的一些技术准备

    夜已经很深了,但却毫无睡意,最近找工作和面试感触良多,所以想记录下来这段过程. 作为一个.Net程序员,不可否认是比JAVA要难混的.甚至在智联招聘或者大街网都没有.NET程序员的备用选项.真是令人悲 ...

  2. 翻译-使用Ratpack和Spring Boot打造高性能的JVM微服务应用

    这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中 ...

  3. Ubuntu 14 安装 .Net Core

    .Net Core的安装包的分发地址如下: https://apt-mo.trafficmanager.net/repos/dotnet-release/pool/main/d/ 方法一: 可以分别手 ...

  4. c#设计模式-适配器模式

    一. 适配器(Adapter)模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作. 名称由来 这很像变压器(Adapter),变压 ...

  5. LINQ系列:Linq to Object排序操作符

    LINQ排序操作符包括:OrderBy.OrderByDescending.ThenBy.ThenByDescending及Reverse. 1. OrderBy 1>. 原型定义 public ...

  6. 详解Java中ArrayList、Vector、LinkedList三者的异同点(转)

    本文转自http://my.oschina.net/zzw922cn/blog/491631 一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于“数”组,ArrayL ...

  7. Hibernate4.0之HibernateSessionFactory源码详解

    import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Conf ...

  8. spring源码分析之cache注解

    Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如EHCache 或者 OSCache),而是一个对缓存使用的抽象 ...

  9. 相克军_Oracle体系_随堂笔记012-undo

    undo表空间中undo段是自动生成的,oracle自动使用undo表空间的undo段. 作为高级DBA,需要了解Oracle是如何使用undo段的.这样出了性能问题才能够解决.   1.Undo表空 ...

  10. SQL Server 2014里的性能提升

    在这篇文章里我想小结下SQL Server 2014引入各种惊艳性能提升!! 缓存池扩展(Buffer Pool Extensions) 缓存池扩展的想法非常简单:把页文件存储在非常快的存储上,例如S ...