C++ Primer Plus 学习笔记(第 5 章 循环和表达关系式)

C++ Primer Plus 学习笔记

第 5 章 循环和表达关系式

C++提供与C语言相同的for循环、while循环、do while循环、if语句和switch语句。

for 循环

for 循环的组成部分

for循环为执行重复的操作提供了循序渐进的步骤。

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

初始化、测试和更新操作构成了控制部分,由括号括起。其中每一部分都是一个表达式,彼此由分号隔开。控制部分后面的语句叫作循环体,只有测试为true,它便被执行。

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

C++语法将整个for看作一条语句。
循环只执行一次初始化。
test-expression(测试表达式)决定循环体是否被执行。通常,这个表达式是关系表达式,即对两个值的比较。C++并没有将test-expression的值限制为只能为真或假。可以使用任意表达式,C++将把结果强制转换为bool类型。
for循环是入口条件循环。即每轮循环之前,都将计算测试表达式的值,当测试表达式为false时,将不进入循环体。
update-expression(更新表达式)在每轮循环结束时执行,此时循环体已经执行完毕。它可以是任何有效的C++表达式,还可以是其他控制表达式。
for循环体由一条语句组成。
for语句看上去有些像函数调用,因为它使用一个后面跟一对括号的名称。然而,for是一个C++关键字,因此编译器不会将for视为一个函数,这还将防止函数命名为for
提示:C++常用的方式是,在for和括号之间加一个空格,而省略函数名与括号之间的空格。对于其他控制语句(如ifwhile),处理方式与for相似。这样从视觉上强化了控制语句和函数调用之间的区别。另外,常见的做法是缩进for语句体,使它看上去比较显著。

表达式和语句

任何值或任何有效的值和运算符的组合都是表达式。在C++中,每个表达式都有值。
C++将赋值表达式的值定义为左侧成员的值。

注意:老式C++实现可能要求使用ios::boolalpha,而不是ios_base::boolalpha来作为cout.setf()的参数。有些老式实现甚至无法识别这两种形式。
通常,cout在显示bool值之前将它们转换为int,但cout.setf(ios_base::boolalpha)函数调用设置了一个标记,该标记命令cout显示truefalse,而不是10

注意:C++表达式是值或值与运算符的组合,每个C++表达式都有值。

为判定表达式x = 100,C++必须将100赋给x。当判定表达式的值这种操作改变了内存中数据的值时,我们说表达式有副作用。因此,判定赋值表达式会带来这样的副作用,即修改被赋值者的值。并不是所有的表达式都有副作用。例如,判定x + 15将计算出一个新的值,但不会修改x的值。然而,判定++x + 15就有副作用,因为它将x1

从表达式到语句的转变很容易,只要加一个分号即可。因此下面是一个表达式:

age = 100

而下面是一条语句:

age = 100;

更准确地说,这是一条表达式语句。只要加上分号,所有的表达式都可以成为语句,但不一定有编程意义。例如,如果rodents是个变量,则下面就一条有效的C++语句:

rodents + 6;        // valid, but useless, statement

编译器允许这样的语句,但它没有完成任何有用的工作。程序仅仅是计算和,而没有使用得到的结果,然后便进入下一条语句(智能编译器甚至可能跳过这条语句)。

非表达式和语句

对任何表达式加上分号都可以成为语句,但这句话反过来说就不对了。也就是说,从语句中删除分号,并不一定能将它转换为表达式。就目前使用的语句而言,返回语句、声明语句和<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值