在循环体外定义的变量为全局变量,循环结束后循环体外定义的变量被循环内的操作赋值,
int main()
{
int i=100;
int j=2; ........1
for(;i<=200;i++)
{
// int j=2; ..........2
for(;j<=i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
printf("%d ",i);
}
{
int i=100;
int j=2; ........1
for(;i<=200;i++)
{
// int j=2; ..........2
for(;j<=i;j++)
{
if(i%j==0)
{
break;
}
}
if(i==j)
{
printf("%d ",i);
}
这个求素数的程序,当j定义在第一个i的循环外,如标注1,进入i循环体后,i=100,j=2,实现整除跳出j的循环,再进入i的循环,此时i=101,j=3,继续j的循环,直到j的值变为101,跳出第二次j循环,判断i=j后输出i,进入第三次i的循环,此时i=102,在进入第三次j的循环时,j=101;不会重新赋初值,接着判断整除,继续循环,j自加,直到i=102,j=102,进入if判断输出i,输出值为101~200之间的每一个数,当j定义在i的循环内,j的循环外时,如标注2,每次进入j循环,j都会重新赋值j=2,实现素数判断的正确算法。以下为正确编译结果和错误编译结果。