局部与全局
这里的printf("main方法内, x=%d\n", x);输出的为啥不是10,为啥是50呢??
2015-08-08
#include <stdio.h> int x = 77; void fn1() { printf("fn1(): x=%d\n", x); } int main() { int x = 10; if(x>0) { x = 100; x /= 2; printf("if语句内, x=%d\n", x); } printf("main方法内, x=%d\n", x); fn1(); return 0; }
看看代码我们知道了啊.
因为在main()中重新定义了x变量位10.
然后在
if(x>0) { x = 100; x /= 2; printf("if语句内, x=%d\n", x); }
中是没有重新定义x变量,而是给x变量赋予了新值100.
x = 100;
看到没.是赋值.而不是定义.而后
x /= 2;
也就是50了.在后面的输出自然是50.
举报