查看: 627  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wei24616

新虫 (小有名气)

[求助] C语言局部变量作用域问题求助已有2人参与

有下列程序,最后两行结果c为什么是10啊?我认为应该是7
int a = 5;               
void f(int x, int y)               
{ int b,c;               
  b=a+x;  
  c=a-y;
printf("%d\t%d\t%d\n",a,b,c);     
}
main( )
{ int b=6,c=7;               
  f(b,c);
  printf("%d\t%d\t%d\n",a,b,c);
  { int a=9,b=8;               
    printf("%d\t%d\t%d\n",a,b,c);     
     { c=10;                      
       printf("%d\t%d\t%d\n", a,b,c);  
      }
    printf("%d\t%d\t%d\n",a,b,c);     
  }
  printf("%d\t%d\t%d\n",a,b,c);        
}
输出结果
程序输出结果:
5       11      -2
5       6       7
9       8       7
9       8       10
9       8       10
5       6       10
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Spook2012

金虫 (小有名气)

F10单步跟踪

[ 发自小木虫客户端 ]
5楼2014-07-02 13:35:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

jianke819

禁虫 (初入文坛)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
wei24616(xzhdty代发): 金币+15, 谢谢应助 2014-06-29 10:14:43
本帖内容被屏蔽

2楼2014-06-28 14:41:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wei24616

新虫 (小有名气)

引用回帖:
2楼: Originally posted by jianke819 at 2014-06-28 14:41:21
{ int b=6,c=7;                     
   f(b,c);
   printf("%d\t%d\t%d\n",a,b,c);
   { int a=9,b=8;               
     printf("%d\t%d\t%d\n",a,b,c);     
      { c=10;      ...

您好,“c的作用域是整个Main函数,后边用到C的,c的值都变成了10”这句话能不能这样理解:在重新赋值前c均为7,重新赋值后c变为了10
3楼2014-06-28 15:18:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lenovo001

禁虫 (正式写手)

感谢参与,应助指数 +1
本帖内容被屏蔽

4楼2014-06-29 08:26:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见