本帖最后由 qq892384796 于 2015-11-22 22:21 编辑
楼主,你这段代码应该属于C语言代码,在Java中是不允许的,即便把所有函数替换为Java的格式,中间的那个大括号{}也就是普通代码块中,重新定义int i=0;Java语法是不支持的,会报该变量名已存在,不可以在重复定义i变量。
站在C语言的角度来看这道题主要考的是i++先运算再加加的特点,以及普通代码块变量的访问区域(就近原则)这两点。
最后的结果是 :1 0 2
程序从上往下以此看输出语句:
1.第一个printf()打印i,i是后++运算,所以先打印1 ,后自增为2
2.第二个printf()同int i=0;一样被一个普通代码块所包含,也就是说在该代码块中使用的i都是内部的i,与代码块外部的i无关(就近原则),所以此处也是后++,打印0,后内部i自增为1
3.第三个printf()所打印的i,楼主要明白普通代码块中所定义的变量,外部是访问不到的,所以此处的i是1处运算后的i,既然也是后++,即结果为先打印2,再自增。
|