程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-哪個大神給個解釋,小白對於這個很不理解,謝謝啦。

c++-哪個大神給個解釋,小白對於這個很不理解,謝謝啦。

編輯:編程綜合問答
哪個大神給個解釋,小白對於這個很不理解,謝謝啦。

代碼#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的變量已經不存在了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved