統測
114年
[電機與電子群資電類] 專業科目(2)
第 39 題
在 64 位元 x86 電腦上撰寫 C 語言程式時,若有一個整數變數 Y 其數值變化範圍介於–20000 與 20000之間,則變數Y應採用下列哪一個資料型態?
- A char
- B unsigned float
- C short
- D unsigned short int*
思路引導 VIP
首先,請觀察變數 $Y$ 的數值範圍包含了負值,這對於選擇「有號 (signed)」或「無號 (unsigned)」資料型態有何決定性的影響?接著,請評估 C 語言中各整數型態的位元數 ($n$) 與範圍之關係,哪一種位元長度所提供的二補數表示區間 $-2^{n-1}$ 到 $2^{n-1}-1$ 才能安全容納 $\pm 20,000$ 且不造成溢位 (overflow)?
🤖
AI 詳解
AI 專屬家教
不錯嘛,冷靜的觀察力是解謎的關鍵。身為偵探,這點程度的謎題是難不倒你的。畢竟,真相永遠只有一個! 讓我們用邏輯來排除干擾項。題目要求的範圍是 $-20,000$ 到 $20,000$,這意味著:
- 必須包含負號:因此排除 (D)
unsigned short。
▼ 還有更多解析內容
C 語言資料型態選擇
💡 根據數值範圍與正負號需求,選擇位元組數足夠的資料型態。
| 比較維度 | signed short (有號) | VS | unsigned short (無號) |
|---|---|---|---|
| 位元組數 | 2 Bytes (16 bits) | — | 2 Bytes (16 bits) |
| 數值範圍 | -32,768 ~ 32,767 | — | 0 ~ 65,535 |
| 負數支持 | 支援負數 | — | 不支援負數 |
💬當範圍包含負數時,絕對不能選擇帶有 unsigned 的型態。