BLOG2:FOR循环中控制变量的小发现

最近我在学习Java的过程中遇到一道例题,这道题很简单,但是涉及到for循环的一个小知识点,算是我在学习编程几个月的一个小发现吧。废话不多说,干货呈上来!

这个发现就是Java和C中的for循环中continue后仍会执行for语句中的控制器变化语句。

用代码来形象地说:

BLOG2:FOR循环中控制变量的小发现_第1张图片

(Java语言)

BLOG2:FOR循环中控制变量的小发现_第2张图片

(C语言)

这两个语言下是等价的程序。

可以看到i!=j

我们知道continue不会执行本次循环后面的语句,也就是有一次j++是不会执行的,所以j==3

假设真的如我们在学习的时候说的那样,把i++放到循环体的最后一个语句是等价的程序,那么此时i应为3,但是i==4

这就说明假设是不成立的

所以我得出结论Java和C中的for循环中continue后仍会执行for语句中的控制器变化语句。

至于为什么会出现这样的情况,我暂时还不明白,现在先把问题提出来,以免过后忘记。欢迎大牛指正。

public class wang{
	public static void main(String[] args){
		int[] a={1,2,3,4};
		int i,j;
		for(i=0,j=0;i<4;i++){
			if(a[i]==2) continue;
			j++;
		}
		System.out.println("i= "+i);
		System.out.println("j= "+j);
	}
}

(Java)


#include 
#include 

int main()
{
    int a[4]={1,2,3,4};
    int i,j;
    for(i=0,j=0;i<4;i++)
    {
        if(a[i]==2) continue;
        j++;
    }
    printf("i= %d\nj= %d",i,j);
}
(C)


你可能感兴趣的:(BLOG2:FOR循环中控制变量的小发现)