Skip to content
-
程式設計 Programming
題目 給定 C 語言程式如下,其中 s 被宣告為全域變數,給定值為 1。請問最後程式執行後輸出為何? (A) 1, 6, 7, 7, 8, 8, 9(B) 1, 6, 7, 7, 8, 1, 9(C) 1, 6, 7, 8, 9, 9, 9(D) 1, 6, 7, 7, 8, 9, 9 參考解答 答案為 (B) 1, 6, 7, 7, 8, 1, 9 本程式挑戰主要在測試同學對於「全域變數」(Global variable)、「區域變數」(Local variable)的生命週期和變數可視範圍(Scope)的理解。若是函數內沒有宣告變數卻使用該變數,則會往外看是否有同名變數,若有則使用該變數。在主程式外的宣告的變數為全域變數,程式內的跨函式都可以存取、修改該變數,若是在函式內宣告的變數或參數變數則為區域變數,區域變數存取修改權僅限於該函式內,函式結束即消失。 我們可以透過觀察程式執行的過程來判斷(在 C 語言我們以主程式 main() 為執行區塊,由上往下執行):例如在 main() 函式內部 s = 9; 這行之前的 s 使用的是全域變數 1。因此傳入 add() 函式的 a 參數為 1。因此 for 迴圈會進行兩次後結束,印出 6, 7, 7, 8(add 函式內的 s 為自己內部宣告的區域變數非外部的全域變數 1,所以不影響到全域變數 s) 最後main() 函式內部使用到的 s 全域變數(前面沒有設定變數型別),被改成 9: […]