資料處理 - 考試

Quanna avatar
By Quanna
at 2014-10-25T00:51

Table of Contents

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.

--
Tags: 考試

All Comments

Jake avatar
By Jake
at 2014-10-28T20:35
正解
Skylar Davis avatar
By Skylar Davis
at 2014-10-29T05:55
謝謝flydragon198大詳細的說明
Emma avatar
By Emma
at 2014-10-29T10:34
高手

Re: 力學小問題

Frederica avatar
By Frederica
at 2014-10-25T00:05
※ 引述《et0331cd (倫)》之銘言: : [問題] 應考資格、各種國考疑難雜症等,以有正確作法、答案者為主 : (不包括書裡的疑問)。若問題如人生規劃、讀書計畫等,無一 : 定作法、答案者,請用閒聊選項。 : http://i.im ...

99地特三等會計學-附退貨權之銷貨

William avatar
By William
at 2014-10-25T00:05
21 甲公司於1月10日將1,000本雜誌運送至乙書局,批發價格每本$200,每本之成 本為$120。乙書局立即支付40%之現金,其餘開立3個月之期票,若3個月後仍未 銷售之雜誌可以退回甲公司,甲公司無法估計退貨率,但每月月底乙書局需提 供當月之銷售資料。至1月31日止,當月份共銷售300本 ...

關於層級化法律保留

Christine avatar
By Christine
at 2014-10-24T23:47
今天上層級化法律保留 講到絕對法律保留時,提到釋字535 說行政機關限制人民權利時,除了組織法外,尚要有行為法作依據 想請問的是,這個原則是絕對法律保留跟相對保留都適用嗎? 因為相對法律保留也有涉及限制人民權利 只是不像絕對法律保留涉及的比較重大 所以 絕對法律保留事項→要有法律作依據 相對法律保留事項→ ...

機械元件設計

Olivia avatar
By Olivia
at 2014-10-24T23:41
※ 引述《enger2567 (神來人)》之銘言: : 已上台鐵佐級 : 目前正要準備四等考~ 普考,鐵員等~ : 因為還未看過機械設計的參考書 : 但手中已有大學時期買的 and#34; 機械元件設計 and#34; 高立圖書有限公司 : 原著:SPOTTS.SHOUP.HORNBERGER : 譯者:吳嘉 ...

資料處理

Bethany avatar
By Bethany
at 2014-10-24T23:35
請寫出程式的輸出結果 int a=5,b=10; int main(){ int func(); extern int a; int b; a=b=6; func(); } int func(){ printf(and#34; ...