这两个居然能有一个编译通过?JAVA的肯定是编译期就错误了。C++很久没碰过了,难道是执行期错误?

解决方案 »

  1.   

    java不会出错的啊。c++出错。
    java的作用域本来就是这样的。
    如: for(int i=0;i<10;i++)
           {
               
             }
            int i;
    肯定会出错的。
      

  2.   

    java中是不允许的,java中的作用域以{}为边界,而且不能“嵌套”同名变量。记得在Thinking in Java中有明确的表述。
      

  3.   

    是java的错了。在for循环中声明的i的作用域就是循环语句块,如果在for循环外使用i必须要重新声明。
      

  4.   

    我想JAVA的可能错了,循环内的i和循环外的i同名??....
      

  5.   

    我试了,java的编译不能通过,C++不会出错,可以编译。是个现象。
      

  6.   

    因为在JAVA中i的作用域在for语句范围内,出了for语句的i是超出了作用域的。而且java中没有这种:
    a{
      int i=0;
      
      b{
        int i=1;
      }}
    修改较大氛围定义的能力在C++中我就不清楚了——我不用C++
      

  7.   

    因为在JAVA那个程序中i的作用域在for语句范围内,出了for语句的i是超出了作用域的。而且java中没有这种:
    a{
      int i=0;
      
      b{
        int i=1;
      }}
    修改较大范围定义的能力。在C++中我就不清楚了——我不用C++
      

  8.   

    C++的
    for(int i=0;;){
        
    }和int i=0;
    for(;;){
    }
    是一样的。
      

  9.   

    其实不难理解,
    C++是沿袭了C的语法在C里,这样写
    for(int i=0;i<10;i++){
    }
    语法上是错误的,C要求变量在执行语句前面定义,所以不能定义在for里
    必须写成
    int i;
    for(i=0;i<10;i++){
    }而C++要保持与C的一定的兼容性,i在里面还是在它的前面定义都是一样的效果
      

  10.   

    java中 对的 java中的作用域一{} 分
    c++中错的可以{{}}
      

  11.   

    对的,在thinking in java 有明确说明!!!
      

  12.   

    java是错得,i=100这句中i没定义,for中int i没定义到这个i
      

  13.   

    政治面貌:一世清白:
    很想和你交个朋友,你的回答总会给我一些提示。你是不是也回答了我的有关java的构造函数的问题。我很像交一些玩技术的朋友。
      

  14.   

    "看来java版的C++菜鸟真不少!!!"9494
      

  15.   

    其它C++的for,你可以把它看作一个函数,而不是一个语句,在一个函数中定义的变量,当然在离开这个函数之后就不存在了,所以C++的那个一定会出错“符号i没定义”。如果想在for后还想使用这个i,那就请在for前定义它。C++中的其它函数式语句都类似。
    Java我就不太清楚了。
      

  16.   

    lichenggang1976(中国龙) 有些时候并不必要的去太专注于技术。
      

  17.   

    是java的错了。在for循环中声明的i的作用域就是循环语句块,如果在for循环外使用i必须要重新声明。
    Eclipse下试过。
      

  18.   

    C++中没错,Java中要把i声明在for的前面。
      

  19.   

    按照规范两个都是错的,但如果你用的是vc那c++的可以编译通过,这是因为vc不是完全支持标准的,而java的是肯定编译通不过
      

  20.   

    java
    肯定是错的,因为出了作用域了,那个i就是一个没有被定义的变量了.
      

  21.   

    在j2sdk1.4.2+linux下:
    javac test.java
    test.java:6: cannot resolve symbol
    symbol  : variable i
    location: class test
    i=100;
    ^
    1 error
      

  22.   

    Java中变量的作用域到{}结束,还不允许有同名的变量,当然是在同一{...}中。所以java 有错误的。c++我不用它。
      

  23.   

    public class Test{
    static int i;
    public static void main(String args[]){

    for( int i=0; i<10; i++ ){
    }
    i=100;
    }
    }
    这样就对了。
      

  24.   

    朋友们,这里很牛的人物还是有的,像“一世清白”,wangzhanhai,我认为写的都不错,总之,上边java的写法是错的,再有就是源程序中的c++部分,i的作用域是指从i向上数的第一个“{”开始到它下边与之对应的“}”结尾的!!另外,java部分,楼上的写法是对的,因为for语句里的i=100是来自于成员变量static int i;这句定义的i,而且main函数是static的,只能引用static的成员变量!!!
    偶也是菜鸟,希望我的想法是对的,欢迎与大家交朋友,特别是刚才提到的"一世清白“与wangzhanhai,ok,改天见!!!1
      

  25.   

    Maybe anybody is right ,because compiler is different ,so result is different.
    But in java scope of variable "i" is in "for" loops.
      

  26.   

    我试过了,
     C++程序在Dev-C++下错误。
     Java程序在Jcreator+JDK1.4下错误。错误原因一样,相信大家都知道,是变量作用域问题。
      

  27.   

    vc 6.0 c++的通过编译 还可以打印i的值 确实是100
    看来是编译器的问题 可能微软的编译器做了容错处理
    java的通过不了
      

  28.   

    是不是这句有点儿问题:public static void main(String argv[]){
    是不是要改成:        public static void main(String args[]){
    My ICQ ID:348732090
      

  29.   

    是java错了,java变量的作用域是{ } 之间,for 循环中的i在退出循环后已经不存在了,循环外的i会出现变量没定义的错误.