C++ Primer Plus学习笔记之循环和关系表达式

前言

个人觉得学习编程最有效的方法是阅读专业的书籍,通过阅读专业书籍可以构建更加系统化的知识体系。
一直以来都很想深入学习一下C++,将其作为自己的主力开发语言。现在为了完成自己这一直以来的心愿,准备认真学习《C++ Primer Plus》。
为了提高学习效率,在学习的过程中将通过发布学习笔记的方式,持续记录自己学习C++的过程。

一、for循环

for循环可以轻松地完成需要重复执行的任务。

for循环的组成部分完成下面这些步骤:

  1. 设置初始值。
  2. 执行测试,看看循环是否应当继续进行。
  3. 执行循环操作。
  4. 更新用于测试的值。

C++循环设计中包括了这些要素,很容易识别。控制部分后面的语句叫作循环体,只要测试表达式为true,它便被执行:

for(initialization; test-expression; update-expression)
    body

test-expression(测试表达式)决定循环体是否被执行。

for循环是入口条件(entry-condition)循环。这意味着在每轮循环之前,都将计算测试表达式的值,当测试表达式为false时,将不会执行循环体。

update-expression(更新表达式)在每轮循环结束时执行,此时循环体已经执行完毕。通常,它用来对跟踪循环轮次的变量的值进行增减。然而,它可以是任何有效的C++表达式,还可以是其他控制表达式。

C++循环允许下面这种写法:

for (int i = 0; i < 5; i++)
{
    //循环内容
}

C++中递增运算符(++)(名称C++由此得到)和递减运算符(--)常被用在循环中的运算符,我们可以通过如下代码,查看其使用效果:

#include <iostream>
using namespace std;
int main()
{
    int i = 0;
    cout << i++ << endl;
    cout << i << endl;
    cout << ++i << endl;
    cout << i << endl;
    cout << i-- << endl;
    cout << i << endl;
    cout << --i << endl;
    cout << i << endl;
}

输出结果如下:

0
1
2
2
2
1
0
0

组合赋值运算符表:

操作符作用(L为左操作数,R为右操作数)
+=将L+R赋给L
-=将L-R赋给L
*=将L*R赋给L
/=将L/R赋给L
%=将L%R赋给L

使用逗号运算符将两个表达式合并为一个:

int i = 0;
i++, i++;
cout << i << endl;

输出结果为:2

逗号运算符,确保先计算第一个表达式,然后计算第二个表达式。

在所有运算符中,逗号运算符的优先级是最低的。例如:

cats = 17,240;

被解释为:

(cats = 17), 240;

也就是说,将cats设置为19240不起作用。然而,由于括号的优先级最高,下面的表达式将把cats设置为240——逗号右侧的表达式值:

cats = (17,240);

关系运算符表:

操作符含义
<小于
<=小于或等于
==等于
>大于
>=大于或等于
!=不等于

二、While循环

While循环是没有初始化和更新部分的 for循环,它只有测试条件和循环体:

while(test-condition)
    body

首先,程序计算圆括号内的测试条件(test-condition)表达式。如果该表法式为true,则执行循环体中的语句。与for循环一样,循环体也由一条语句或两个花括导定义的语句块组成。执行完循环体后,程序返回测试条件,对它进行重新评估,如果该条件为非零,则再次执行循环体。测试和执行将一直进行下去直到测试条件为false为止。

提示:在设计循环时,请记住下面几条直到原则。

  • 指定循环终止的条件。
  • 在首次测试之前初始化条件。
  • 在条件被再次测试之前更新条件。

记住,语句块是由花括号,而不是由缩进定义的。

C++为类型建立别名的方式有两种,第一种是使用预处理器:

#define BYTE char

这样,预处理器将在编译程序时用char替换所有的BYTE,从而使BYTE成为char的别名。
第二种方法是使用C++(和C)的关键字typedef来创建别名:

typedef char byte;

这样,可以将byte作为char的别名。

三、do while循环

for循环和while循环不同,do while循环是出口条件(exit condition)循环。这意味着这种循环将首先执行循环体,然后再判定测试表达式,决定是否应继续执行循环。如果条件为false,则循环终止:否则,进入新一轮的执行和测试,这样的循环通常至少执行一次,因为其程序流必须经过循环体后才能到达测试条件。下而是其句法:

do
    body
while (test-condition);

四、基于范围的for循环(C++11)

C++11新增了一种循环:基于范围(range-based)的for循环。这简化了一种常见的循环任务:对数组(或容器类,如vectorarray)的每个元素执行相同的操作,如下例所示:

double prices[2] = {3.2, 29.1};
for (double x : prices)
    cout << x << endl;

其中,x最初表示数组prices的第一个元素。显示第一个元素后,不断执行循环,而x依次表示数组的其他元素。因此,上述代码显示全部5个元素,每个元素占据一行。总之,该循环显示数组中的每个值。

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

for (double &x : prices)
{
    x = x * 0.8;
    cout << x << endl;
}

符号&表明x是一个引用变量,这种声明让接下来的代码能够修改数组的内容,而第一种语法不能。

五、循环和文本输入

cin.get(ch)与cin.get()

属性cin.get(ch)ch=cin.get()
传递输入字符的方式赋给参数ch将函数返回值赋给ch
用于字符输入时函数的返回值istream对象(执行bool转换后为true)int类型的字符编码
到达EOF时函数的返回值istream对象(执行bool转换后为false)EOF

六、嵌套循环和二维数组

二维数组更像是一个表格——既有数据行又有数据列。
C++没有提供二维数组类型,但用户可以创建每个元素本身都是数组的数组。例如:

int personHeightWeight [2][2] = 
{
    {180, 78},
    {168, 64}
}
cout << personHeightWeight [0][1] <<endl;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值