#include <stdio.h>
int main(void)
{
//情况一:i变量只存在于循环外
/*
* i变量作为main函数块的局部变量,for循环的循环头
* 和循环体都在使用
*/
#if 0
int i = 0;
printf("before for i = %d\n", i);
for (i = 1; i < 3; i++)
{
printf("main for i = %d\n", i);
i += 2;
}
printf("behiend for i = %d\n", i);
#endif
//情况二:i变量存在于循环外和循环头
/*
* 第一个i变量作为main函数块的局部变量。
* 当第二个i变量在循环头中被声明了之后,在整个
* for循环中,第二个i变量覆盖了第一个i变量,但
* 是在退出整个循环之后,第二个变量就消失了,而
* 被第一个变量取代。
*/
#if 0
int i = 0;
printf("before for i = %d\n", i);
for (int i = 1; i < 3; i++)
{
printf("head i = %d\n", i);
}
printf("behiend for i = %d\n", i);
#endif
//情况三:i变量存在于循环外、循环头和循环体
/*
* 循环体中声明了第三i变量,循环体作为整个循环的子块,
* 第三个变量i会覆盖掉循环头的变量。一次循环体结束后,
* 第三个变量i就会消失一次。第二个变量直至整个循环结束
* 后才会消失。
*/
#if 1
int i = 0;
printf("before for i = %d\n", i);
for (int i = 1; i < 3; i++)
{
printf("head for i = %d\n", i);
int i = 10;
printf("body for i = %d\n", i);
i++;
printf("body for i = %d\n", i);
}
printf("behiend for i = %d\n", i);
#endif
return 0;
}
变量在for循环头和循环体的作用域
最新推荐文章于 2024-10-03 13:36:06 发布