C++#C++ Primer Plus# 第三节 处理多少

  • 面向对象编程(OOP)的真相:设计并扩大自己之数据类型
  • 坐C++数据类型
C++数据类型
  • 标识存储的数的不二法门:使用变量
  • C++中之算术运算
  • C++中的类型转换

3.1 简单变量

信囤积的老三个基本性:

  • 信息用积存于哪
  • 只要存储什么价值
  • 积存何种类型的音讯

3.1.1 变量名

C++变量命名规则:

  • 每当称呼被只能使假名字符、数字与下划线(_)
  • 名称的首先只字符不克是数字
  • 分别轻重缓急写字符
  • 毫无动C++关键字当名称
  • 因简单个下划线或下划线和生写字母打头的名将给封存给落实(编译器及其使用的资源)使用。以一个下划线开头的名号为保留让落实,用作全局标识符(名称叫声称的职务)
  • C++对于称的长度没有限制,名称中所有的字符都产生义,但稍事平台发生长限制。(ANSI
    C只包名称中之前63独字符来含义)

差不多个单词组成名称的拍卖办法:

  • 运用下划线字符分开单词(C程序员惯用)
  • 由第二只单词开始首字母大写(Pascal程序员惯用)

3.1.2 整型

  • 言语只能表示有整数的一个子集
  • 差C++整型使用不同之外存量来储存整数,使用的外存量越怪,可代表的整数范围就更是老

3.1.3 整型short、int、long、long long

  1. C++确保这些类别的最好小长:

    • short至少16位
    • int至少与short一样长
    • long至少32各,且至少和int一样长
    • long long至少64员,且至少和long一样长
  2. 号:计算机内存的骨干单元,每一样各还有0/1星星种可能。

  3. 字节:8员的内存单元。

  4. C++字节:由至少能够容纳实现之中坚字符集的彼此邻位组成,即可能的取值数目必须等或越字符总数。在动用ASCII码的系受到,一个字节表示8各类;在用Unicode的网被,一个字节表示16或32个。

  5. short是short int的简称,long是long int的简称

  6. sizeof运算符返回路或者变量的长度,对品种名,将称在括号中;对变量名,括号是可选的。eg:sizeof(int); sizeof n_short;

  7. 头文件climits定义了表示各种限制的号名称,比如 INT_MAX

  8. #define INT_MAX 32767
    #define大凡一个预处理器编译指令,它寻找独立的token(单独的单词),跳了置的单词,进行调换

  9. 变量初始化的老三种植方法:

    • int owls = 101; // 来自C语言
    • int wrens(432); // C++方式
    • int hamburgers = {24};
      //C++11初始化方式,用于数组或组织,也可用来单值变量
  10. C++11初始化方式

    • int a{2};//a=2
    • int b = {3};//b=3
    • int c{};//c=0
    • int d = {};//d=0

C++11教可将大括如泣如诉初始化器用于其他类型(可以应用等号,也足以免使用),这是同一种植通用的初始化语法。

3.1.4 无标志类型

  1. 亮点:增大变量能够存储的极端大值
  2. 用:使用主要字unsigned(unsigned int的缩写)
  3. 独立的整型溢起作为
典型的整型溢出行为

3.1.5 选择整型类型

  1. int被设置为对象电脑的自长(natural
    size,指的凡电脑处理起来效率最高的尺寸)
  2. 设没有生有说服力的理由,则选择int
  3. 倘变量表示的值未容许啊乘,则采用无符号类型
  4. 若果掌握或者意味着的整数值大于16各证书的额头最充分可能价值,则使long
  5. 设若存储的值操作20亿,则使用long long
  6. 当起大型整型数组或省内存很重点时才使用short

3.1.6 整型字面值

  1. 十进制:第一号是1~9
  2. 八进制:第一各项是0
  3. 十六进制:前少个是0x或0X
  4. 则来差之象征方法,但是还将因为平等之法门(二上前制数)
    存储于电脑中
  5. 控制符oct或hex,实际上是一模一样漫长消息,告诉cout采取何种行为

int a = 10;
//输出八进制
cout <<oct
 <<a;
//输出十六进制
cout <<hex
 <<a;

3.1.7 C++如何规定常量的档次

  1. 惟有有理由(使用特别后缀或者值太要命)存储吗另外类型,否则默认将整型常量存也int
  2. 率先看后缀
    • long:l/L后缀
    • unsigned int:u/U 后缀
    • unsigned long:ul/uL/Ul/UL后缀
    • long long 和 unsigned long long 同理
  3. 其次看长度
    • 对于不带来后缀的十进制整数的设想顺序:int 、long、long long
    • 对于非牵动后缀的十六进制或八前进制整数之考虑顺序:int、unsigned
      int、unsigned long、long long、unsigned long long

3.1.8 char类型:字符和小整数

  1. 囤字母:通过字母之数值编码解决问题
  2. char用来处理字符,也可以为此做比short更粗之整型
  3. cin和cout的转化作用:根据变量类型,输入和出口字符类型
  4. C++对字符使用单引号,对字符串使用对引号
  5. cout.put(字符常量/字符变量) 函数
    • 作用:显示一个字符
    • 是ostream的一个成员函数,句号是成员运算符
    • 历史由来:cout在C++Release
      2.0之前,cout将字符变量显示也字符,而以字符常量显示为数字
  6. char字面值
    • 健康字符:使用单引号括起
    • 挺规字符(比如单引号):使用转义字符(\)转义,可以行使数字转义序列或字符转义序列(比如
      \0x8和\b都意味着退格)
  7. 通用字符名
    • C++支持一个中心的源字符集,即可用来编写源代码的字符集
    • C++标准还同意实现提供扩展源字符集和扩展执行字符集
    • C++提供平等栽象征特殊字符的编制,独立于其他特定的键盘,使用通用字符名(universal
      character name)
    • \u + 8单十六进制位
    • \U + 16只十六向前制位
  8. signed char和unsigned char
    • char于默认情况下既非是发出号子为无是不曾标记的,是否生号由C++实现控制
    • signed char范围-128~127,unsigned char范围0~255
  9. wchar_t
    • 釜底抽薪之题目:程序要处理的字符集无法使一个8各项的字节表示
    • 化解智1:如果大型字符集是促成的中坚字符集,那么编译器厂商可以用char定义为一个16各项字节或者再次丰富的字节
    • 解决方式2:使用wchar_t
      (宽字符类型),底层的类型取决于C++实现,可能是unsigned
      short或int等
    • wcin和wcout可以拍卖wchar_t流
    • 累加前缀L来指示宽字符常量和宽字符串(如,L”tall”)
  10. C++ 11新添品种:char16_t 和 char32_t
    • 釜底抽薪之题材:Unicode的普及,对特定长度以及记特征的品类的待,而wchar_t随实现而各异
    • 运用前缀u指示char16_t,无符号,长16位
    • 行使前缀U指示char32_t,有符号,长32位

3.1.9 bool类型

  1. C++将非零值解释啊true,将零解释为false
  2. 另外数字值或指针值都尽管得为隐式转换为bool值

3.2 const限定符

记常量的象征:

  • 号首字母大写
  • 全体名大写
  • 使用前缀k
  • ……

比方声明常量时无供价值,则该常量的价将是休确定的,且无法修改的。

const较#define的优点:

  • 可知肯定指定项目
  • 可以为此利用C++的作用域规则以概念限定于一定的函数或文件中
  • 足用const用于复合类型

ANSI C和C++中const的区别:

  • 作用域规则
  • C++中得用const值声明数组长度

3.3 浮点数

小数,带小数部分的数字,分点儿片存储,一部分代表值,另一样组成部分代表缩放因子(用来移动多少数碰之位置)。

3.3.1 书写浮点数

  1. 规范小数点表示拟
  2. E表示法
    • d.dddE+n表示用小数碰望右侧走n位
    • d.dddE-n代表用有些数点向坐移动n位

E表示法

3.3.2 浮点类型

  1. C++有3中浮点类型:float、double、long double
  2. 表示:有效数位+允许的指数绝小范围
  3. 实惠位(significant figure):数字被生含义之号
  4. 可查看头文件cfloat获取系统对浮点数的限量

3.3.3 浮点常量

  1. 默认情况下吧double类型
  2. 倘若要常量为float类型,请使用f或F后缀
  3. 假设期望为long double,可使用l或L后缀

3.3.4 浮点数的优缺点

  1. 好象征整数之间的价
  2. 是因为发生缩放因子,可以表示又怪范围之底数
  3. 浮点运算速度缓慢,精度低

3.4 C++算术运算符

3.4.1 运算符优先级和结核性

  1. 仅仅当半只运算符被用来同一操作数时,优先级和结合性规则才使得
  2. C++用优先级规则来规定第一用谁运算符
  3. 可用括号来实施好定义之优先级
  4. 当半个运算符优先级相同时,C++看操作数的结合性是打左至右还是打右边至错误

3.4.2 除法分支

除法运算符(\)的行为在操作数的色

除法运算符的表现在操作数的路

3.4.3 求模运算符

请模运算符(%):返回整数除法的余数

3.4.4 类型转换

机动类型转换的景象:

  • 拿同一种植算术类型的值赋给其他一样种档次的变量
  • 表达式中蕴含不同之花色
  • 以参数传递给函数时

#1:初始化和赋值进行的换

转换 潜在的问题
将较大的浮点类型转换为较小的浮点类型,比如double转float 精度降低;当值超出范围时,结果不确定
将浮点型转为整型 小数部分丢失;当值超出范围时,结果不确定
将较大的整型转为较小的整型,如long转short 当值超出范围时,通常只复制右边的字节

#2:以{}方式初始化(列表初始化)时开展的转移(C++11)

列表初始化不允缩窄

#3:表达式中的转换

自动转换 不同类型运算时转换
– bool、(unsigned)char、short 自动转为 int,因为int类型是计算机的自然类型<br />- 若short比int短,则unsigned short被转为int;若长度相同,则unsigned short被转为unsigned int<br />- wchar_t被转换成下列第一个宽度足够存储其取值范围的类型:int、unsigned int、long和unsigned long 1. 按下列顺序,当有一个类型符合,则另一个操作数将被转换成同一类型:long double>double>float <br />2. 整型提升<br />3. 比较有无符号和操作数的级别

#4:传递参数时的易

  1. C++对char和short类型应用整型提升
  2. 用参数传递给取消原型对参数传递控制的函数时,C++将float参数提升为double

#5:强制类型转换

  1. 强制类型转换不会见转移变量本身,而是创建一个新的、指定项目的值
  2. 强制类型转换格式
    • (typename) vlaue //C Style
    • typename (vlaue) //C++ Style,就像函数调用一般
  3. static case<typename> value //更严苛的类型转换

3.4.5 C++11中的auto声明

  • 让编译器根据初始值的色推断变量的种
  • 一般用于拍卖千头万绪类型,比如STL中的型