java与c/c++的差异(一)
复合语句或者块是指若干简单的语句由一对花括号包围,花括号里面的定义的变量只在这一对花括号的范围内有作用。
在一个函数中,可能会有很多对花括号包围的块。例如,java语言的一个简单实例:
public class test{ public static void main(String[] args) { for(int i=0; i<10; i++) { } for(int i=0; i<10; i++) { } } }
c语言的实例:
void main() { for(int i=0; i<10; i++) { } for(int i=0; i<10; i++) { } }
但是,java语言不能在嵌套的两个块中声明同名的变量。即下面的代码是有错误的:
public class test{ public static void main(String[] args) { int i=0; for(int i=0; i<10; i++) { } for(int i=0; i<10; i++) { } } }
这里会报一个错误是:变量i已经在main函数中定义了。错误的地方指向了两个for循环中的i。但是在c/c++语言中,这样的嵌套定义是被允许的,内层的变量会覆盖掉外层的变量。因为嵌套定义有可能会导致程序设计错误,因此在java语言中被禁止了。