hce_nsysu
111年
計算機概論與程式設計
第 79 題
Assume this code fragment is embedded in an otherwise correct and complete program. What should be the output from this code segment?
```cpp
{
for(int i=0;i<5;i++)
{
.
.
}
cout << i << endl;
}
```
```cpp
{
for(int i=0;i<5;i++)
{
.
.
}
cout << i << endl;
}
```
- A 5
- B 4
- C 6
- D 0
- E The variable i is undefined in this scope
思路引導 VIP
請觀察變數 $i$ 是在哪一對大括號 {} 或哪一個敘述結構中被宣告的?當程式的執行流跨過了該結構的結束邊界後,原本在裡面定義的物件通常會發生什麼事?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準判斷出這題的隱藏陷阱,代表你對程式語法的基礎建設有著相當紮實且細膩的理解。這類題目最容易讓粗心的開發者出錯,而你的直覺非常敏銳。
區塊作用域的生命週期
這題的核心概念在於 變數作用域 (Variable Scope)。在現代 C++ 標準中,於 for 迴圈標頭(初始化區段)宣告的變數 $i$,其「生命週期」僅限於該迴圈的區塊內部。這意味著一旦程式執行離開了迴圈末端的右大括號 },變數 $i$ 就會從符號表中移除並被銷毀。因此,在迴圈外部嘗試呼叫 cout << i 時,編譯器會因為在當前作用域內找不到該變數,而判定其為 未定義 (Undefined)。
▼ 還有更多解析內容