C++Primer中文版(第四版)题解整理(17)

时间:2025-04-20

C++Primer题解

<<"is"<<sum<<std::endl;

【解答】不合法。因为变量i具有语句作用域,只能在for语句中使用,输出语句中使用i属非法。

习题2.22

下列程序段虽然合法,但是风格很糟糕。有什么问题呢?怎样改善?

for(inti=0;i<100;++i)

//processi

【解答】

问题主要在于使用了具体值100作为循环上界:100的意义在上下文中没有体现

出来,导致程序的可读性差;若100这个值在程序中出现多次,则当程序的需求发生变化(如将100改变为200)时,对程序代码的修改复杂且易出错,导致程序的可维护性差。

改善方法:设置一个const变量(常量)取代100作为循环上界使用,并为该变量选择有意义的名字。

习题2.23

下列哪些语句合法?对于那些不合法的使用,解释原因。

(a)constintbuf;

(b)intcnt=0;

constintsz=cnt;

(c)cnt++;sz++;

【解答】

(a)不合法。因为定义const变量(常量)时必须进行初始化,而buf没有初始化。

(b)合法。

(c)不合法。因为修改了const变量sz的值。

习题2.24

下列哪些定义是非法的?为什么?如何改正?

(a)intival=1.01;(b)int&rval1=1.01;

(c)int&rval2=ival;(d)constint&rval3=1;

【解答】

(b)非法。

因为rval1是一个非const引用,非const引用不能绑定到右值,而1.01是一个右值。可改正为:

int&rval1=ival;

(假设ival是一个已定义的int变量)。

习题2.25

在习题2.24给出的定义下,下列哪些赋值是非法的?如果赋值合法,解释赋值

C++Primer中文版(第四版)题解整理(17).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219