我是靠谱客的博主 鳗鱼白猫,最近开发中收集的这篇文章主要介绍【读书笔记:C++ primer plus 第六版 中文版】第3章:数据处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转载请注明出处:http://blog.csdn.net/enyusmile/article/details/46580987

本章内容包括:

  • C++变量的命名规则.
  • C++内置的整型 unsigned long,long,unsigned int,int,unsigned short,short,char,unsigned char,signed char和bool.
  • C++11新增的整型:unsigned long long和long long.
  • 表示各种整型的系统限制的climits文件.
  • 各种整型的数字字面值(常量).
  • 使用const限定符来创建符号常量.
  • C++内置的浮点类型:float,double和long double.
  • 表示各种浮点类型的系统限制的cfloat文件.
  • 各种浮点类型的数字字面值.
  • C++的算术运算符.
  • 自动类型转换.
  • 强制类型转换.
  • 面向对象编程OOP的本质是设计并扩展自己的数据类型.
  • 内置的C++类型分两组:基本类型和符合类型.

3.1 简单变量
3.1.1 变量名

  • C++提倡使用有一定含义的变量名.
  • 必须遵循几种简单的C++命名规则:
    • 在名城众只能使用字母字符,数字和下划线(_).
    • 名称的第一个字符不能是数字.
    • 区分大写字符与小写字符.
    • 不能将C++关键字用作名称.
    • 以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用.以一个下划线开头的名称被保留给实现,用作全局标识符.
    • C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制.

3.1.2 整型
3.1.3 整型short,int,long和long long

  • C++提供了一种灵活的标准,它确保了最小长度(从C语言借鉴而来),如下所示:
    • short至少16位
    • int至少与short一样长;
    • long至少32位,且至少与int一样长;
    • long long至少64位,且至少与long一样长.
  • 实际上,short是short int的简称,而long是long int的简称,但是程序设计者们几乎都不使用比较长的形式.
  • 1.运算符sizeof和头文件limits
    • 可对类型名或变量名使用sizeof运算符.对类型名(如:int)使用sizeof运算符时,应将名称放在括号中;对变量名使用该运算符,括号是可选的.
    • 头文件climits定义了符号常量来标识类型的限制.
    • C++有一种更好的创建符号常量的方法:关键字const,所以不会经常使用#define.
  • 2.初始化
    • 警告:如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的.这意味着该变量的值将是它被创建之前,相应内存单元保存的值.
  • 3.C++11初始化方式
    • C++11使得可将大括号初始化器用于任何类型(可以使用等号,也可以不使用),这是一种通用的初始化语法.

3.1.4 无符号类型

  • 只需使用关键字unsigned来修改声明即可;注意unsigned本身是unsigned int的缩写.

3.1.5 选择整型类型

  • 通常,int被设置为对目标计算机而言最为”自然”的长度.自然长度指的是计算机处理起来效率最高的长度.

3.1.6 整型字面值

  • C++能够以三种不同的计算方式来书写整数:基数为10,基数为8(老式UNIX版本)和基数为16(硬件黑客的最爱).

3.1.7 C++如何确定常量的类型
3.1.8 char类型:字符和小整数

  • 虽然char最常被用来处理字符,但也可以将它用做比short更小的整型.
  • 程序清单3.6,morechar.cpp
    • 成员函数cout.put()
    • 句点被称为成员运算符.
    • char字面值
      • 提示:在可以使用数字转移序列或符号转移序列(如x8和b)时,应使用符号序列.数字表示与特定的编码方式(如ASCII码)相关,而符号表示适用于任何编码方式,其可读性也更强.
  • 程序清单3.7,bondini.cpp
    • 注意:有些基于ANSI C之前的编译器的C++系统不能识别a.对于使用ASCII字符集的系统,可以用07替换a.有些系统的行为可能有所不同,例如可能将b显示为一个小矩形,而不是退格,或者在退格时删除,还可能忽略a.
  • 通用字符名
    • 请注意:C++使用术语”通用编码名”,而不是”通用编码”
  • signed char和unsigned char
  • wchar_t
    • 这种类型与另一种整型(底层(underlying)类型)的长度和符号属性相同.对底层类型的选择取决于实现,因此在一个系统中,它可能是unsigned short,而在另一个系统中,则可能是int.
    • cin和cout将输入和输出看作是char流,因此不适于用来处理wchar_t类型.iostream头文件的最新版本提供了作用相似的工具—wcin和wcout,可用于处理wchar_t流.另外,可以通过加上前缀L来指示宽字符常量和宽字符串.
  • C++11新增的类型:char16_t和char32_t
    • 类型char16_t与/u00F6形式的通用字符名匹配,而类型char32_t与/U0000222B形式的通用字符名匹配.
    • 前缀u和U分别指出字符字面值的类型为char16_t和char32_t.

3.1.9 bool类型

  • 过去,C++和C一样,也没有布尔类型.C++将非零值解释为true,将零解释为false.
  • true被转换为1,而false被转换为0;另外,任何数字值或指针值都可以被隐式转换(即不用显示强制转换)为bool值.任何非零值都被转换为true,而零被转换为false.

3.2 const限定符

  • 一种常见的做法是将名称的首字母大写;另一种约定是将整个名称大写;还- 有一种约定是以字母k打头;等等其他约定…
  • 创建场梁的通用格式:const type name = value;
  • 应在声明中对const进行初始化
  • ANSI C也是用const限定符,这是从C++借鉴来的.区别之一是作用域规则;另一个主要区别是,在C++(而不是C)中可以用const值来声明数组长度.

3.3 浮点数

  • 计算机将浮点数这样的值分成两部分存储.一部分表示值,另一部分用于对值进行放大或缩小.

3.3.1 书写浮点数

  • 记住:d.dddE+n指的是将小数点向右移n位,而d.dddE~n指的是将小数点向左移n位.之所以称为”浮点”,就是因为小数点可移动.

3.3.2 浮点类型

  • 和ANSI C一样,C++也有3种浮点类型:float,double和long double.
  • 事实上,C和C++对于有效为数的要求是,float至少32位,double至少48位,且不少于float,long double至少和double一样多.这三种类型的有效位数可以一样多.然而,通常float为32位,double为64位,long double为80,96或128位.另外,这3种类型的指数范围至少是-37到37.可以从头文件cfloat或float.h中找到系统的限制.
  • 注意:有些C++实现尚未添加头文件cfloat,有些基于ANSI C之前的编译器的C++实现没有提供头文件float.h
  • 程序清单3.8 floatnum.cpp
    • 程序说明
      • 通常cout会删除结尾的零.

3.3.3 浮点常量

  • 对于long double类型,可使用l或L后缀,如:2.2L

3.3.4 浮点数的优缺点

  • 程序清单3.9 fltadd.cpp
    • 注意:有些基于ANSI C之前的编译器的老式C++实现不支持浮点常量后缀f.如果出现这样的问题,可以用2.34E+22代替2.34E+22f,用(float)1.0代替1.0f.
  • 将类型分类:C++对基本类型进行分类,行程了若干个族.类型signed char,short,int和long统称为符号整型;他们的无符号版本统称为无符号整型;C++11新增了long long.bool,char,wchar_t,符号整数和无符号整型统称为整型;C++11新增了char16_t和char32_t.float,double和long double统称为浮点型.证书和浮点型统称算法(arithmetic)类型.

3.4 C++算术运算符

  • 记住:对于float,C++只保证6位有效位.

3.4.1 运算符优先级和结合性
3.4.2 除法分支

  • 注意:如果编译器不接受setf()中的ios_base,请使用ios.
  • 预算富重载简介:使用相同的符号进行多种操作叫做运算符重载.C++有一些内置的重载示例.C++还与允许扩展运算符重载,以便能够用于用户定义的类.

3.4.3 求模运算符
3.4.4 类型转换

  • 为处理潜在的混乱,C++自动执行很多类型转换:
    • 将一种算术类型的值赋给另一种算术类型的变量时,C++将对值进行转换;
    • 表达式中包含不同的类型时,C++将对值进行转换;
    • 将参数传递给函数时,C++将对值进行转换.
  • 1.初始化和赋值进行的转换
    • 程序清单3.13 assign.cpp
  • 2.以{}方式初始化时进行的转换(C++11)
    • C++11将使用大括号的初始化称为列表初始化,因为这种初始化常用语给复杂的数据类型提供值列表.具体的说,列表初始化不允许缩窄,即变量的类型可能无法表示赋给它的值.
  • 3.表达式中的转换
    • 有符号整型按级别从高到低依次为long long,long,int,short和signed char.无符号整型的排列顺序与有符号整型相同.类型char,signed char和unsigned char的级别相同.类型bool的级别最低.wchar_t,char16_t和char32_t的级别与其底层类型相同.
  • 4.传递参数时的转换
    • 传递参数时的类型转换通常由C++函数原型控制.
  • 5.强制类型转换
    • 两种方式:(long)thorn;和long(thorn);强制类型转换不会修改thorn变量本身,而是创建一个新的,制定类型的值,可以在表达式中使用这个值.
    • 强制转换的通用格式:(typeName)value或typeName(value)

3.4.5 C++11中的auto声明

  • 让编译器能够根据初始值的类型推断变量的类型.如果使用关键字auto,而不制定变量的类型,编译器将把变量的类型设置成与初始值相同;

3.5 总结
3.6 复习题
3.7 编程练习

附件:本章源代码下载地址

最后

以上就是鳗鱼白猫为你收集整理的【读书笔记:C++ primer plus 第六版 中文版】第3章:数据处理的全部内容,希望文章能够帮你解决【读书笔记:C++ primer plus 第六版 中文版】第3章:数据处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部