#include <stdio.h>
int x = 77;
void fn1()
{
printf("fn1(): x=%d\n", x);
}
int main()
{
int x = 10; //x在这里赋值为10,在下一行判定为大于所以运行if括号里的代码
if(x>0)
{
int x = 100; //x被赋值为100
x /= 2; //在这里计算到结果x=50
printf("if语句内, x=%d\n", x);
} //跳出if语句,在这里x是否重新被赋值为10
printf("main方法内, x=%d\n", x);
fn1();
return 0;
}
运行结果:
if语句内, x=50
main方法内, x=10
fn1(): x=77
在运行完if语句后跳出是否重新被赋值为x=10??
最开头的那个值为77的x 和 main函数中初值为10的x 和 if中的那个x 是三个不同的变量,只是同名而已。
在if中改变的是if中的那个x值,不会影响到main中的那个x,也不会影响到前面的那个x,所以没有什么“重新赋值”一说。
只有fn1函数中没有再次定义x,所以它用的是最上面的那个x,打印出的就是77了。