看板 Examination 關於我們 聯絡資訊
C_and_CPP版是不錯的程式版 ※ 引述《flyyen ( )》之銘言: : 請寫出程式的輸出結果 1: int a=5,b=10; 2: int main(){ 3: int func(); 4: extern int a; 5: int b; 6: a=b=6; 7: func(); 8: } 9: int func(){ 10: printf("%d%d",a,b); 11: } : 輸出結果: 610 為了方便,我加上行號 : 我的問題:extern int a; : 從網路上找到的資料是說,此變數已在別處定義,告知程式到別的地方 : 尋找此變數。所以在主程式中,a一開始為5,之後被指定成6,再將a=6 : 及b=6帶入func(),但print出來的結果怎麼不會是66? : 麻煩各位高手幫小弟解惑, 謝謝! 程式通常先弄可以編譯執行,這樣不論是要研究或者是找問題,都會比較容易 http://codepad.org/NR4Hqmwa 這題最主要是在考scope 在main外面宣告了兩個a,b,然後在main裡面宣告了一個b 我在這裡用黃色代表main外面的a,b,紅色代表main內的b 當呼叫func的時候,這裡面所引用的a,b,是在main外面所宣告的a,b 不信你把外面宣告的b拿掉,你會發現編譯不過,因為編譯器找不到func()用的b 在第五行的 int b;,這裡是宣告了一個main內優先使用的b 第六行的 a = b = 6; 這裡改動的b是main內宣告的,而a則是外面宣告的a 因為第四行的extern int a;  這裡意思是在main內,要用main外已經宣告的a 不信的話,你可以把這行改成int a;  答案會變成510 這裡並沒有更動到外面的b,其值還是10 所以當你呼叫 func()的時候,a的值是6,b的值依然是10 印出來就會是 6 10 -- 追求卓越,成功就會出其不意找上門。 Follow Excellence. Success will chase you. Chase the excellence, success will follow you. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.173.45.75 ※ 文章網址: http://www.ptt.cc/bbs/Examination/M.1414169507.A.2BB.html
ARCHERDEVIL: 正解 10/25 10:06
flyyen: 謝謝flydragon198大詳細的說明 10/26 00:00
controlfeng: 高手 10/26 01:11