首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

局部变量值的变化解决办法

2012-04-14 
局部变量值的变化第一段C代码:C/C++ codeint a5main( ) { int b6,c7printf(%d\t%d\t%d\n,a,b,c){

局部变量值的变化
第一段C代码:

C/C++ code
int a=5;main( ) { int b=6,c=7;  printf("%d\t%d\t%d\n",a,b,c);   { int a=9,b=8,c=8;            printf("%d\t%d\t%d\n",a,b,c);          [color=#008000]{ c=10;                          printf("%d\t%d\t%d\n", a,b,c);        }[/color]    [color=#FF0000]printf("%d\t%d\t%d\n",a,b,c);[/color]       }  printf("%d\t%d\t%d\n",a,b,c);        }

为什么倒数第2行输出 9 8 10 
我的理解是输出 9 8 8 因为c=10的作用范围只存在于绿色标示范围的复合语句中,倒数第2行输出的C应该是c=8


第二段代码:
C/C++ code
int a=5;main( ) { int b=6,c=7;  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);     [color=#FF0000]     { c=10;                          printf("%d\t%d\t%d\n", a,b,c);        }[/color]    printf("%d\t%d\t%d\n",a,b,c);       }  printf("%d\t%d\t%d\n",a,b,c);        }


为什么最后2行输出是: 9 8 10
  5 6 10
还是不懂局部变量c的作用范围,我的理解是输出:
9 8 7
5 6 7
不是已经跳出了复合语句(红色部分)吗?那么变量c的值就应该是外层的同名变量c呀?
问题很简单,还请不要见笑。

[解决办法]
这是一个变量的作用域的问题。c是一个局部变量,其作用域是从它开始定义的地方开始到函数(主函数)的结束。你中间对其修改了值c = 10;所以,它的输出时9 8 10.
[解决办法]
int a=5;
main( ) 

int b=6,c=7;
printf("%d\t%d\t%d\n",a,b,c); 

int a=9,b=8,c=8; 局部变量c这里定义
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); 
局部变量c到这里结束
}
printf("%d\t%d\t%d\n",a,b,c);
}
[解决办法]
把那个 c=10; ,改成 int c=10;再试试,区分定义和赋值的概念

热点排行