::作用域表示的是全局范围的,也就是说:
错误:
int main {
int i = 0;
{ ::i = 6; }//报错
}
正确:
int i = 1;
int main()
{
{
int i = 2;
{
int i = 3;
::i = 6;
std::cout << " i = " << i << std::endl;
}
std::cout << " i = " << i << std::endl;
}
std::cout << " i = " << i << std::endl;
}
//输出
i = 3
i = 2
i = 6
所以下面也是正确的,在C中,main可以递归,但在c++标准规定main不能递归,不能重载,关于递归,编译器可以不支持c++这条标准,关于重载,应该编译器都不支持
int i = 5;
int main()
{
if(i < 0)
return 0;
--i;
return main();
}
因为main是函数,所以可以递归调用,也处于全局作用域之内