不懂,求解釋!
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;
}
這里的x=100不是只在if語句中定義的嗎?為什么會對if語句之外的printf語句產生影響?
而改成int x=100之后變成局部變量,作用范圍只在if語句內。
2015-07-11
最初聲明的 x 的作用域是整個 main 函數,if 語句中修改的就是就是上面聲明的 x 的值。如果 if 中又聲明了一個 x,則重名的局部變量在小的作用域中有效,一旦回到外面,又是最初聲明的 x 有效。