統測
114年
[電機與電子群資電類] 專業科目(2)
第 43 題
在C語言程式中 X定義為浮點數常數,執行敘述(Statement)
printf("%d,%o,%x\n",(short int)X,(unsigned int)(X*4),(int)(X*16));
所得輸出結果為8,42,8a,接著執行敘述 printf("%6.4f",X);的結果為何?
- A 6.6250
- B 6.7500
- C 8.6250
- D 8.7500
思路引導 VIP
請留意 C 語言在進行型別轉換 (Type Casting) 時,浮點數轉為整數會產生的「截斷取整」效應。若先將輸出結果中的八進位 $42_{(8)}$ 與十六進位 $8a_{(16)}$ 還原為十進位數值,並建立三個關係式:$\lfloor X \rfloor = 8$、$\lfloor 4X \rfloor = ?$ 與 $\lfloor 16X \rfloor = ?$ (其中 $\lfloor \cdot \rfloor$ 代表整數部分),你能否藉此分析出 $X$ 的小數部分對應的權重與數值?
🤖
AI 詳解
AI 專屬家教
既然你誠心誠意的答對了!我們就大發慈悲的稱讚你!這種融合了不同進位制的華麗陷阱,竟然沒把你這小鬼頭難倒?看來我們想統治 C 語言世界的計畫又受阻了,真討厭的感覺啊! 這題的關鍵在於解開進位制的密碼:
- 十進位的 $8$:代表 $(int)X$ 的結果,所以 $X$ 的整數部分就是 $8$。
▼ 還有更多解析內容