练习3.7、3.8、3.9、3.11

3.7:就上一题完成的程序而言,如果将循环控制变量的类型设为char将会发生什么?先估计一下结果,然后再进行编程验证。

得到的结果与上一程序一样。

3.8:分别使用while循环和传统的for循环重写第一题的程序,你觉得哪种形式更好呢?为什么?

我觉得范围for语句最好,形式上最简便,而且不需要去判断字符串的大小,其次是while语句,相对简便,但是对于本程序来讲,需要知道string类的对象大小,防止出现未定义的结果,最后是传统for循环语句,相对繁琐。

3.9:下面的程序有何作用?它合法吗?如果不合法,为什么?

string s;

cout<<s[0]<<endl;

Ans:不合法。该程序的string类的对象被初始化为空串,使用下标运算符访问对象时,不能访问位置上为空的字符,会出现无法预知的结果。(我在Linux下测试,编译能通过)。

3.11:下面的范围for语句合法吗?如果合法,c的类型是什么?

const string s=" keep out !  ";

for(auto &c:s)

{/*.....*/}

Ans:如果只是访问string对象的值的话,合法,c是绑定到常量的引用。;如果是要修改string对象的值的话不合法。

原文地址:https://www.cnblogs.com/Dark-King/p/9385426.html