分享

for循环内变量作用域问题

 dingzi4178 2010-04-22
问题:
#include <stdio.h>

int main()
{
// int a;
// int a;
for(int i=0;i<5;i++)
{
  int b;
  b++;
  printf("%d",b);
}

return 0;
}
上面这个程序在for循环中多次int b都没有关系,程序都正确。
但是下面的程序在for循环外多次int a就出现错误了,请问为什么呢?
#include <stdio.h>

int main()
{
int a;
int a;
for(int i=0;i<5;i++)
{
  int b;
  b++;
  printf("%d",b);
}

return 0;
}
 
解答:
下面你的程序出现了重复定义的错误,即一个程序中不能同时定义同名的两个变量,你在程序中int a; 后变量a的作用域是全局的,定义第二个int a;后作用域也是全局的,这是绝对不允许的。
上面的代码中,你在for循环中定义了int b; 变量b的作用域就在for循环体内,循环一次后局部变量b就会消失,当执行第二次for循环时,会重新定义局部变量b,不会出现重复定义。因此编译时不会出错!!!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多