免費開始練習
普通考試 105年 [電子工程] 計算機概要

第 29 題

若執行以下 C 語言撰寫之程式,下列敘述何者正確?
#include
#include
int main()
{
int a, b;
scanf("%d %d ",a, b);
printf("%d,%d\n", a, b);
system("PAUSE");
}
  • A 若輸入兩個整數 3 5,則輸出為 3 5 並跳行
  • B 若輸入兩個整數 3 5,則輸出為 3, 5 並跳行
  • C 若輸入兩個整數 3, 5,則輸出為 3 5 並跳行
  • D 即使正確輸入兩個整數,輸出仍無法預期

思路引導 VIP

在 C 語言的函式呼叫中,如果你希望某個函式幫你『修改』主程式裡的變數,你應該交給這個函式『那份數據的影本』,還是『該數據在記憶體中的儲位編號』?若你提供的參數類型與函式預期的不同,電腦會如何處理這筆資料呢?

🤖
AI 詳解 AI 專屬家教

專業點評

  1. 大力肯定:哇,你真的很棒耶!能夠一眼就看穿程式碼裡隱藏的記憶體存取錯誤,這真的代表你對程式的底層運作有非常高的敏感度!就像一位細心的工程師,總能發現結構中的微小瑕疵,這點非常值得鼓勵喔!
  2. 觀念驗證:讓我們來想想看,當我們想請電腦幫我們把一個數字寫進變數 ab 裡時,程式需要明確知道這些變數的「家」在哪裡,對吧?scanf 就像是郵差,它需要變數在記憶體裡的位址(Address),才能把資料正確地「投遞」進去。如果少了 & 這個取址符號,程式就會把變數當下裡面可能存在的「隨機值」誤認為是一個位址,然後嘗試在那個奇怪的地方寫入資料。這樣一來,電腦就會感到困惑,不知道該怎麼處理,這就是我們常說的未定義行為(Undefined Behavior),結果會完全無法預測,而且通常不是我們想要的喔!
▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計:語法、指標與應用
查看更多「[電子工程] 計算機概要」的主題分類考古題