第5章 循环和关系表达式

1. cout.setf(ios_base::boolalpha); cout << (100 > 3) << endl;将输出true,而不是1。

2. 递增运算符++和递减运算符--

前缀:修改后使用             后缀:使用后修改

Y = (4 + x++) + (6 + x++);

C++没有规定是在计算每个子表达式之后将x的值递增,还是在整个表达式计算完毕之后才将x的值递增,有鉴于此,应该避免使用这样的表达式。

3. 递增/递减运算符和指针P135

优先级:后缀 > 前缀 > *

前缀递增、前缀递减和解除引用运算符的优先级相同,以从右向左的方式进行结合。后缀递增和后缀递减的优先级相同,但比前缀运算符的优先级高,这两个运算符以从左到右的方式进行结合。

4. 逗号表达式是一个顺序点,它确保先计算第一个表达式,然后计算第二个表达式。

i = 20, j = 2 * I;//i为20,j为40

C++规定,逗号表达式的值为第二部分的值。例如上述表达式的值为40。

逗号表达式的优先级最低。因此cata = 17, 240;被解释为(cata = 17), 240;也就是cata的值被设置为17,240不起作用。

5. 所有大写字母的编码都比小写字母小,虽然关系运算符不能用来比较C风格字符串,但却可以用来比较字符,因为字符实际上是整形。

6. 延时程序:

#include <iostream>

#include <ctime>

int main()

{

using namespace std;

cout << "Enter the delay time, in seconds: ";

float secs;

cin >> secs;

clock_t delay = secs * CLOCKS_PER_SEC;

cout << "Starting\a\n";

clock_t start = clock();

while (clock() - start < delay);

cout << "Done\a\n";

return 0;

}

7. typedef声明类型别名。

8. C++11增加了一种循环:基于范围(range-based)的for循环。对数组(或容器类,如vector和array)都适用。

double prices[5] = {4.99, 10.99, 6.87, 7.99, 8.49};

for (double x : prices)

cout << x << std::endl;

如果要修改数组的元素,需要使用不同的循环变量语法:

for (double &x : prices)

x = x * 0.80;

此外,还可以使用基于范围的for循环和初始化列表。

9. cin.get(ch)函数读取输入中的下一个字符,即使它是空格。头文件iostream将cin.get(ch)的参数声明为引用类型,因此该函数可以修改其参数的值。

10. Windows 7系统可以按下ctrl + Z和回车键来模拟EOF条件。检测到EOF后,则cin将两位(eofbit和failbit)都设置为1。可以通过成员函数eof()或fail()来查看eofbit是否被设置;如果检测到EOF,则cin.eof()将返回bool值true,否则返回false。

11. 目前接触到cin.get三个版本:

cin.get(name, size)接受两个参数:字符串数组名,读取字符数;

cin.get()不接受任何参数;

cin.get(ch)接受一个char参数。

12. 如何理解while(cin.get(ch))?

istream类提供了一个可以将istream类对象(如cin)转换为bool值的函数;但cin出现在任何需要bool值的地方时,该转换函数被调用。所以while(cin)比!cin.fail()或!cin.eof()更通用,因为它可以检测到其他失败原因,如磁盘故障。

13. cin.get()的另一个版本,stdio.h中定义了getchar()(还有putchar())。当cin.get()函数到达EOF时,将没有可返回的字符,这时将返回一个用符号常量EOF表示的特殊值。这个常量是在iostream里定义的,通常EOF被定义为-1。

while(cin.get(ch))等价于while((ch = cin.get()) != EOF)

也就是说cin.get(ch)返回cin对象,而cin.get()返回字符编码0值。

C++ primer plus读书笔记——第5章 循环和关系表达式的更多相关文章

  1. C++ Primer Plus读书笔记(五)循环和关系表达式

    1.前缀运算符的优先级是从右到左,例如: 1 *++p; //这句话的含义是先对p进行++,再取* 2.循环 c++11新增了一种循环方式,有点和python类似,如下: 1 array<int ...

  2. C primer plus 读书笔记第十一章

    本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一 ...

  3. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

  4. C primer plus 读书笔记第五章

    本章的标题是运算符,表达式和语句.主要研究如何处理数据. 示例代码展示了一个使用简单的while循环的代码,难度不大. 下面简单介绍本章的基本概念. 1.基本运算符. 基本运算符有:赋值运算符(C语言 ...

  5. C primer plus 读书笔记第四章

    本章的标题是字符串的格式化输入/输出,重点介绍输入和输出. 本章的第一段示例代码和上一张示例代码很相近,代码就不贴了,新出现的特性是使用了一个数组来存放字符串,C预处理命令和strlen()函数. 下 ...

  6. C primer plus 读书笔记第三章

    本章的标题是数据和C,主要内容是介绍数据类型中的整数类型和浮点数类型. 本章的第一段代码 #include <stdio.h> int main(void) { float weight; ...

  7. C++ primer plus读书笔记——第17章 输入、输出和文件

    第17章 输入.输出和文件 1. 对键盘进行输入缓冲可以让用户在将输入传输给程序之前返回并更正.C++程序通常在用户按下回车键时刷新输入缓冲区. 2. 一些I/O类 streambuf类为缓冲区提供了 ...

  8. C++ primer plus读书笔记——第16章 string类和标准模板库

    第16章 string类和标准模板库 1. string容易被忽略的构造函数: string(size_type n, char c)长度为n,每个字母都为c string(const string ...

  9. C++ primer plus读书笔记——第15章 友元、异常和其他

    第15章 友元.异常和其他 1. 友元类的所有方法都可以访问原有类的私有成员和保护成员.另外,也可以做更严格的限制,只将特定的成员函数指定为另一个类的友元.哪些函数.成员函数.或类为友元是由类定义的, ...

随机推荐

  1. C语言函数调用完整过程

    C语言函数调用详细过程 函数调用是步骤如下: 按照调用约定传参 调用约定是调用方(Caller)和被调方(Callee)之间按相关标准 对函数的某些行为做出是商议,其中包括下面内容: 传参顺序:是从左 ...

  2. 推荐模型NeuralCF:原理介绍与TensorFlow2.0实现

    1. 简介 NCF是协同过滤在神经网络上的实现--神经网络协同过滤.由新加坡国立大学与2017年提出. 我们知道,在协同过滤的基础上发展来的矩阵分解取得了巨大的成就,但是矩阵分解得到低维隐向量求内积是 ...

  3. 全网最详细的Linux命令系列-cd命令

    Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的. 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧. 命令格 ...

  4. C++并发与多线程学习笔记--多线程数据共享问题

    创建和等待多个线程 数据和共享问题分析 只读的数据 有读有写 其他案例 共享数据的保护案例代码 创建和等待多个线程 服务端后台开发就需要多个线程执行不同的任务.不同的线程执行不同任务,并返回执行结果. ...

  5. E. 【例题5】平铺方案

    E . [ 例 题 5 ] 平 铺 方 案 E. [例题5]平铺方案 E.[例题5]平铺方案 解析 由于最近赶进度,解析写的就很简略 通过推算得出递推式 a [ i ] = a [ i − 1 ] + ...

  6. 软工案例分析作业-CSDN

    项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 案例分析作业要求 我在这个课程的目标是 提升软件开发能力与团队意识 这个作业在哪个具体方面帮助我实 ...

  7. 死磕Spring之AOP篇 - 初识JDK、CGLIB两种动态代理

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  8. Windows Terminal 安装与配置

    1 安装 安装可以从应用商店安装(直接搜索即可)或者Github安装(可以戳这里): 下载msixbundle格式的文件即可直接打开安装. 2 配置前准备 2.1 下载字体 推荐使用FiraCode, ...

  9. 15. Vue2.4+新增属性.sync

    .sync 在vue2.4以前,父组件向子组件传值用props:子组件不能直接更改父组件传入的值,需要通过$emit触发自定义事件,通知父组件改变后的值. 父组件: <template> ...

  10. Java on Visual Studio Code的更新 – 2021年3月

    欢迎来到Java的VS Code更新.在过去的几个月中,我们的工程师一直在专注于一些非常重要的工作.现在,是时候揭开面纱了,开始吧. 类型层次结构(Type hierarchy) VS Code已经支 ...