C語言基礎

C語言的標準中,關於 int 型別的大小有何規定?下列何者正確?

  1. A在所有處理系統中都規定為32位元
  2. B只規定至少要有16位元,實際大小由處理系統決定
  3. C規定與CPU的位址寬度相同,在64位元的CPU上為64位元
查看答案與解析

正確答案:B. 只規定至少要有16位元,實際大小由處理系統決定

C語言的標準只要求 int 至少能表示 −32767~32767(也就是16位元以上),實際大小由處理系統(編譯器與目標CPU的組合)決定。在16位元微控制器用的編譯器中,int 可能是16位元;在多數PC與32位元微控制器上則是32位元。即使在64位元的Linux或Windows上,int 一般仍是32位元,變成64位元的是指標。需要固定大小的整數時,使用 stdint.h 的 int32_t 等型別。

  • A. 32位元是許多環境中的大小,但並非標準的規定。也有使用16位元 int 的處理系統。
  • B. 正確。標準只規定可表示範圍的下限,實際大小由處理系統決定。
  • C. 即使在64位元的Linux或Windows上,int 一般也是32位元。
練習這個領域 前往領域頁面

C語言基礎的其他題目

  1. 在嵌入式程式中,存放32位元周邊暫存器值的變數,常以 stdint.h 的 uint32_t 宣告,而不是 unsigned int。主要理由為下列何者?
  2. 執行上方含有整數除法的程式碼時的輸出,下列何者正確?
  3. 執行上方使用前置與後置 ++ 的程式碼時的輸出,下列何者正確?
  4. 執行上方在 if 敘述的條件中寫了 = 的程式碼時的輸出,下列何者正確?
  5. 為了檢查暫存器值 reg 的位元2是否為1,寫了上方的程式碼。執行時的結果,下列何者正確?