主题:一个有关作用域的问题
代码如下
#include<stdio.h>
int main(void)
{
int n=10;
printf("Initially n=%d &n=%p\n",n,&n);
for(int n=1;n<3;n++)
printf("Loop 1 n=%d &n=%p\n",n,&n);
printf("After loop 1 n=%d &n=%p\n",n,&n);
for(int n=1;n<3;n++)//<1>
{
printf("Loop 2 index n=%d &n=%p\n",n,&n);
int n=30;//<2>
printf("Loop 2 n=%d &n=%p\n",n,&n);
n++;//<3>
}
printf("After loop 2 n=%d &n=%p\n",n,&n);
return 0;
}
使用的是C99标准。
问题:在第二个循环中,for语句中声明的n和循环体内声明的n为什么不冲突内?为什么循环体内第二个printf()输出的是循环体内的n而第一个printf()输出的是for中的n?<3>所在行的n++为什么是对for中声明的n操作呢?
#include<stdio.h>
int main(void)
{
int n=10;
printf("Initially n=%d &n=%p\n",n,&n);
for(int n=1;n<3;n++)
printf("Loop 1 n=%d &n=%p\n",n,&n);
printf("After loop 1 n=%d &n=%p\n",n,&n);
for(int n=1;n<3;n++)//<1>
{
printf("Loop 2 index n=%d &n=%p\n",n,&n);
int n=30;//<2>
printf("Loop 2 n=%d &n=%p\n",n,&n);
n++;//<3>
}
printf("After loop 2 n=%d &n=%p\n",n,&n);
return 0;
}
使用的是C99标准。
问题:在第二个循环中,for语句中声明的n和循环体内声明的n为什么不冲突内?为什么循环体内第二个printf()输出的是循环体内的n而第一个printf()输出的是for中的n?<3>所在行的n++为什么是对for中声明的n操作呢?