資料處理 - 考試

By Quanna
at 2014-10-25T00:51
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.
--
※ 引述《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

By Jake
at 2014-10-28T20:35
at 2014-10-28T20:35

By Skylar Davis
at 2014-10-29T05:55
at 2014-10-29T05:55

By Emma
at 2014-10-29T10:34
at 2014-10-29T10:34
Related Posts
Re: 力學小問題

By Frederica
at 2014-10-25T00:05
at 2014-10-25T00:05
99地特三等會計學-附退貨權之銷貨

By William
at 2014-10-25T00:05
at 2014-10-25T00:05
關於層級化法律保留

By Christine
at 2014-10-24T23:47
at 2014-10-24T23:47
機械元件設計

By Olivia
at 2014-10-24T23:41
at 2014-10-24T23:41
資料處理

By Bethany
at 2014-10-24T23:35
at 2014-10-24T23:35