代碼#include
Int main()
{
int a =20;
int score;
{ a = 10;
score =a + 250;
int score = 30;
printf("%d\n",score);
}
printf("%d\n",score);
return 0;
}
為何輸出的兩個score值不一樣?我感覺第二次有一個int輸入,第二個score值應該為30了,怎麼會為260呢?很不理解,請大神給個解釋呗,謝謝啦。
這個是變量作用域的問題,實在不能理解為什麼,可以用VS單步調試,監控&score的地址,輸出30和260的時候&score是不相同的,大概可以簡化如下
{//我是括號君A
int score**[addr1]**;//聲明周期是所有A中,直到A括號結束
...
{//我是括號君B
score**[addr1]**=a+250;
int score**[add2]**=30;//聲明周期是所有B中,直到B括號結束
printf socre**[addr2]** //這個時候第一個score地址是add1的變量被隱藏,不可見
}
printf socer**[addr1]** //這個時候剛才的地址是add2的變量已經不存在了
}