2.2.4节练习
练习2.13:下面程序中j的值是多少?
int i = 42;
int main()
{
int i = 100;
int j = i;
}
出题思路:本题旨在考查全局作用域与局部作用域的关系。
解答:j的值是100。C++允许内层作用域重新定义外层作用域中已有的名字,在本题中,int = 42;位于外层作用域,但是变量i在内层作用域被重新定义了,因此真正赋予j的值是定义在内层作用域中的i的值,即100。
练习2.14:下面的程序合法吗?如果合法,它将输出什么?
int i = 100 sum = 0;
for (int i = 0; i !=10; ++i)
sum += i;
std::cout << i << " " << sum << std::endl;
出题思路:本题旨在考查嵌套作用域中变量的定义和使用。
解答:该程序是合法的,输出结果是100 45。
该程序存在嵌套的作用域,其中for循环之外是外层作用域,for循环内部是内层作用域。首先在外层作用域中定义了i和sum,但是在for循环内部i被重新定义了,因此for循环实际上是从i=0循环到i=9,内层作用域中没有重新定义sum,因此sum的初始值是0并在此基础上依次累加。最后一句输出语句位于外层作用域中,此时在for循环内部重新定义的i已经失效,因此实际输出的仍然是外层作用域的i,值为100;而sum经由循环累加,值变为了45。
普通的冒险故事提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。
好书推荐:《我的剧本世界在自主运行》、《我是舰娘》、《我的师妹是妖女》、《交错世界之学院都市》、《认清现实后,她们开始追夫火葬场》、《好徒儿你就饶了为师伐》、