今天遇到一题目: [url=][/url]
public class Test { public static boolean p(char a){ System.out.println(a); return true; } public static void main(String[] args) { int i = 0; for(p('a'); p('b') && i < 2; p('c')){ i ++; System.out.println('d'); } }}[url=][/url]
运行结果:() A、abdcbdcb B、abcdbcdb C、编译出错 D、运行出错
当时我的想法是:for(初始化; 判断条件; 更新变量){} 上面的试题没有在位置上初始化,更新变量,我就选择了C。 回来测试后发现,语法完全没有问题,只要在for循环里出现了";"就可以视为表达式的分割符。也就是说只要有分割符不写东西也是可以编译通过的,如:for(;;){},不过是个死循环。 编译没错,那运行结果呢?肯定也是跟for循环一样的执行顺序。 遇到问题解决了就是进步,继续努力吧!
|