#include<stdio.h>
int main()
{
int a=3, b=4;
a = a - b;
{
int b= 2;
a = a - b;
b = a + b;
printf("%d %d ",a,b);
}
printf("%d %d",a,b);
return 0;
}
在函数(括号)内,如果有变量名字和全局变量名字相同,那么在函数(括号)内的操作都是局部变量,函数(括号)外用的才是全局变量
此处第一个b是全局变量,第二个b是局部变量
程序执行行数 | a | 第一个b | 第二个b | 输出 |
---|---|---|---|---|
第1行 | 3 | 4 | 未定义 | |
第3行 | -1 | 4 | 未定义· | |
第7行 | -1 | 4 | 2 | |
第9行 | -3 | 4 | 2 | |
第11行 | -3 | 4 | -1 | |
第13行 | -3 | 4 | -1 | -3 -1 |
第17行 | -3 | 4 | -1 | -3 -1 -3 4 |
首先a变为-1,括号里,打印 -3,-1,次b为大括号内局部变量的2,出括号后a仍为-3,b为main函数范围下的b,为4,内大括号的b已被销毁·。
括号里面又声明了一个b,这括号里面用b的时候,括号里面的运算系统会运用括号里面声明的b,而括号外面不可以,括号外面的b是第一个声明的b,如果括号里面没有声明b,才会运用第一个声明的b