※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言:
: ※ 引述《enjoydance.bbs@bbs.ntnu.edu.tw (苦力國標魔羯男)》之銘言:
: > 樓上的答案錯誤吧...@@...
: > int 32 bits 並不是因為CPU的通用暫存器的緣故..
: > 而是程式的定義就是設定成一個整數的數值範圍可以有2的32位元..
: > 改成64位元的CPU並不會改變int的定義長度...@@
: 他其實也沒說錯,
: 通常 C compiler 決定 int 的大小,
: 會選擇 CPU 多數指令裡一次就能處理掉的 data size,
: 通常跟 CPU 的 register 寬度有關,
: 但是不是絕對。
: 如果真的要「絕對正確」的答案,
: 那只能說是看寫 C compiler 的人爽而已,
: 也因為這樣 C 才會有 sizeof 這種 operator,
: 避免 programmer 直接用寫死的數字做判斷,
: 奇怪的是很多人還是熱愛那些 magic number。
即使是用64位元的CPU, 大多數的 compiler 不會自動偵測環境
來產生 64 bit object. 一般的預設值是 32 bit, 使用特別的
compiling flag 才能使 compiler 產生 64 bit object. 例如
gcc, icc, 和 ecc 要用 '-xarch=v9' 或是 'xarch=v9a'.
執行檔若是以上述的 compiling flag 來產生, 且是用64位元的CPU,
int 的長度就會變成 64-bit.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.6.95.138