不懂,求解釋!
int main()
{
? ? int x = 10;
? ? if(x>0)
? ? {
? ? ? ? x = 100;
? ? ? ? x /= 2;
? ? ? ? printf("if語句內(nèi), x=%d\n", x); ? ? ??
? ? }
? ? printf("main方法內(nèi), x=%d\n", x);
? ? fn1();
? ? return 0;
}
這里的x=100不是只在if語句中定義的嗎?為什么會(huì)對if語句之外的printf語句產(chǎn)生影響?
而改成int x=100之后變成局部變量,作用范圍只在if語句內(nèi)。
2015-07-11
最初聲明的 x 的作用域是整個(gè) main 函數(shù),if 語句中修改的就是就是上面聲明的 x 的值。如果 if 中又聲明了一個(gè) x,則重名的局部變量在小的作用域中有效,一旦回到外面,又是最初聲明的 x 有效。