精華區beta Programming 關於我們 聯絡資訊
※ 引述《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