上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2 局部变量声明
在C语言中,局部变量应该在函数的可执行语句之前定义;但在C++中,变量可在任何语句位置定义,只要允许出现程序语句的地方,都允许定义变量。程序Eg2-1.cpp在C语言中是错误的,原因是变量定义语句L3出现在了可执行语句L2的后面。但此程序在C++中却是正确的。
【例2-1】 下面的程序在C语言中存在编译问题,但在C++中是正确的。
//Eg2-1.cpp void main(){ int x; //L1 x=9; //L2 int y; //L3 y=x+1; //L4 }
另外,C++允许在for循环语句中定义变量。
【例2-2】 在C++中,在for循环的测试语句中定义变量。
//Eg2-2.cpp #include<iostream.h> void main(){ int n=1; for(int i=1;i<=10;i++){ int k; n=n*i; k=i; } //i(在C++语言规范中,i的作用域到此就结束了。但某些编译器(如Visual C++ 6.0)扩大了for循环中定义变量的作用域,其有效范围扩展到了定义该变量的for循环后面的“}”,这里就属于这种情况。本程序在Visual C++ .NET中不能通过编译,原因是cout访问的i已失去了作用域。),k的作用域至此结束 cout<<n<<i<<endl; //i在此的值是11 } //n,i的作用域到此结束
在C++中,变量在包含定义它的最近一对{ }内有效,称为块作用域。因此,上面程序中的n在整个main()函数内有效,而i和k仅在for循环体内有效。