統測
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 產生錯誤。
▼ 還有更多解析內容