请问下面的程序正确吗?如果正确,它做了什么呢?如果不正确,说明理由,并把它改正确。
#include <iostream>
#include <string>
int main(void)
{
{ std::string s = "a string";
{ std::string x = s + ". really";
std::cout << s << std::endl;}
std::cout << x << std::endl;
}
return 0;
}
解答:这个程序是不正确滴,因为变量x的作用域范围仅在
{ std::string x = s + ". really";
std::cout << s << std::endl;}
这个大括号括起来的范围内,所以倒数第四行想输出x,实际上在这个时候x是没有定义的,所以会出错,要修改只需去掉那个大括号即可。
程序运行结果: