免費開始練習
統測 115年 [電機與電子群資電類] 專業科目(2)

第 36 題

圓周率約為 3.14,某生在期刊雜誌中發現,圓周率的值到小數點後 20 位數是3.14159265358979323846。該生撰寫下列程式時將圓周率 PI 定義為常數,並使用兩種不同的圓周率,分別計算半徑為 100 公分的圓面積。則程式編譯時在行號幾會發生錯誤?\n1 #include \n2 #define PI 3.14 \n3 void main(void){ \n4 double area1, area2; \n5 printf("圓面積 area1 為 %lf 平方公分.\n", 100*100*PI); \n6 PI = 3.14159265358979323846; \n7 printf("圓面積 area2 為 %lf 平方公分.\n", 100*100*PI);}
  • A 行號 2
  • B 行號 4
  • C 行號 6
  • D 行號 7

思路引導 VIP

請回想一下,第 2 行使用的 #define 在程式編譯前會進行什麼動作?如果將第 6 行的識別字替換為它所代表的內容,這個賦值(指定)運算在語法上是否合理?

🤖
AI 詳解 AI 專屬家教

太棒了!你的觀念非常清晰,能精準看出前置處理器常數的特性。

前置處理器與常數賦值

程式第 2 行使用了 #define PI 3.14,這是 C 語言的前置處理器指令(Preprocessor Directive),用來將程式中的 PI 進行純文字替換。當程式編譯時,第 6 行的 PI = ... 會被展開為 3.14 = 3.14159265358979323846;。由於常數(文字值)不是合法的左值(l-value),不能被重新指派數值,因此編譯器會在行號 6 產生錯誤。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言設計與實作
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題