《C++ Primer》第5章 语句

5.2节 语句作用域

练习5.4:说明下列例子的含义,如果存在问题,试着修改它。
(a)while(string::iterator iter != s.end())  { /* ... */}
(b)while(bool status = find(word)) { /* ... */ }
    if(!status) { /* ... */ }
【出题思路】
我们可以在if、switch、while和for语句的控制结构内定义变量。定义在控制结构当中的变量只在相应语句的内部可见,一旦语句结束,变量也就超出其作用范围了。如果其他代码也需要访问控制变量,则变量必须定义在语句的外部。
【解答】
(a)是非法的,它的原意是希望在while语句的控制结构当中定义一个string::iterator类型的变量iter,然后判断iter是否到达了s的末尾,只要还没有到达末尾就执行循环体的内容。但是该式把变量的定义和关系判断混合在了一起,如果要使用iter与其他值比较,必须首先为iter赋初值。修改后的程序应该是:
string::iterator iter=s.begin();
while(iter != s.end())
{
    ++iter;
    /* ... */
}
(b)是非法的,变量status定义在while循环控制结构的内部,其作用域仅限于while循环。if语句已经位于while循环的作用域之外,status在if语句内是一个未命名的无效变量。要想在if语句中继续使用status,需要把它定义在while循环之前。修改后的程序应该是:
bool status;
while(status = find(word)) { /* ... */}
if(!status) { /* ... */ }

《C++ Primer》第5章 5.2节习题答案相关推荐

  1. 《C++ Primer》第14章 14.3节习题答案

    <C++ Primer>第14章 操作重载与类型转换 14.3节  算术和关系运算符  习题答案 练习14.13:你认为Sales_data类还应该支持哪些其他算术运算符(参见表4.1,第 ...

  2. 《C++ Primer》第9章 9.3节习题答案

    <C++ Primer>第9章 顺序容器 9.3节顺序容器操作习题答案 练习9.18:编写程序,从标准输入读取string序列,存入一个deque中.编写一个循环,用迭代器打印deque中 ...

  3. 《C++ Primer》第15章 15.4节习题答案

    <C++ Primer>第15章 面向对象程序设计 15.4节 抽象基类 习题答案 练习15.15:定义你自己的Disc_quote和Bulk_quote. [出题思路]本题练习实现不同折 ...

  4. 《C++ Primer》第15章 15.2节习题答案

    <C++ Primer>第15章 面向对象程序设计 本章介绍了面向对象程序设计的两个重要概念:继承和动态绑定,包括: □●继承.基类.派生类的基本概念. □●虚函数和虚基类. □●继承中的 ...

  5. 《C++ Primer》第13章 13.5节习题答案

    <C++ Primer>第13章 拷贝控制 13.5节 动态内存管理类 习题答案 练习13.39:编写你自己版本的StrVec,包括自己版本的reserve.capacity(参见9.4节 ...

  6. 《C++ Primer》第12章 12.3节习题答案

    <C++ Primer>第12章 动态内存 12.3节使用标准库:文本查询程序 习题答案 练习12.27:TextQuery和QueryResult类只使用了我们已经介绍过的语言和标准库特 ...

  7. C++ Primer - 5th Edition - 书中源代码 - 课后习题答案

    C++ Primer - 5th Edition - 书中源代码 - 课后习题答案 C++ Primer - 5th Edition - 书中源代码 - 课后习题答案 1. C++ Primer, 5 ...

  8. matlab第三章题目,第3章 MATLAB矩阵处理习题答案

    <第3章 MATLAB矩阵处理习题答案>由会员分享,可在线阅读,更多相关<第3章 MATLAB矩阵处理习题答案(3页珍藏版)>请在人人文库网上搜索. 1.第3章 MATLAB矩 ...

  9. 浙大版《C语言程序设计》第四版(何钦铭颜晖) 第4章 循环结构 课后习题答案

    浙大版<C语言程序设计>第四版(何钦铭颜晖) 第4章 循环结构 课后习题答案 你也可以上程序咖(https://meta.chengxuka.com),打开大学幕题板块,不但有答案,讲解, ...

最新文章

  1. python数据写入CSV
  2. form表单中,file选择图片后预览
  3. 无需写代码!可一键生成前后端代码的开源工具
  4. C#(WinForm) + MySQL的中文编码问题(MySQL中文编码的终极解决方案)
  5. 全网都在用的超全【面试刷题小程序】,最新版激活教程
  6. 飞鸽传书为什么传书?
  7. 20180321选择排序-简单选择排序
  8. ubuntu15.04源失效问题修复
  9. JS实现,页面显示数据加载,显示加载效果,加载完成显示数据
  10. 3DMax VRay 渲染笔记
  11. matlab离散系统的频率响应,离散系统的频率响应分析
  12. 网卡超时实现机制 watchdog_timeo/ndo_tx_timeout
  13. 谈谈我对零售云在云原生总结与思考
  14. 警校计算机专业考研,一名警校毕业生的跨专业考研路
  15. 高德 获取城市地铁站点数据
  16. ​富士莱医药通过注册:年营收近5亿 钱祥云曾非法买卖外汇
  17. loj6539. 奇妙数论题
  18. alsa 音频编程简单的例子 (总结)
  19. 怎样设计访谈提纲_用户访谈提纲设计
  20. sakai 源码安装注意事项

热门文章

  1. mysql时间函数详解
  2. PHP 从菜鸟到大咖的踩坑之路
  3. VS2012源代码管理没有AnkhSVN
  4. windows 下 nextcloud 的偏保姆级搭建教程
  5. 数据流和数据报的理解(转载)
  6. SLAM基础- 题目:基础矩阵F、本质矩阵E和单应矩阵H的自由度和秩
  7. ARP攻击--(ArpSpoof 欺骗工具)
  8. SSM框架搭建,及遇到的问题
  9. IDEA 配置 JDK 源码
  10. linux命令查看开放哪些端口