[問題] sizeof(long) = 4的話,long跟int一樣嗎

看板C_and_CPP (C/C++)作者 (SOSOYA)時間16年前 (2009/04/11 07:51), 編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
如題 如果 sizeof(long)為4的話 那在這系統上 可表示的值跟int一樣多 long不就沒意義了嗎? 我試vs跟gcc long的長度都是4 搞不懂long拿來幹馬的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.99.0.10

04/11 07:59, , 1F
那是現在的sizeof(int)=4
04/11 07:59, 1F

04/11 07:59, , 2F
在以前的時代(16-bit那時) sizeof(int)=2
04/11 07:59, 2F

04/11 08:00, , 3F
所以當時的 compiler 就多半是這種設定 例如古董 Turbo C
04/11 08:00, 3F

04/11 08:00, , 4F
以後進入64-bit時代時說不定 sizeof(int) 就會變成 8...
04/11 08:00, 4F

04/11 09:58, , 5F
原po可以考慮用long long... %lld
04/11 09:58, 5F

04/11 12:27, , 6F
64bit的CPU上 long 的長度是8
04/11 12:27, 6F

04/11 13:39, , 7F
long 在習慣上會跟 pointer 的 size 一樣長。
04/11 13:39, 7F

04/11 13:39, , 8F
有些實作需要把 pointer 做 hash 會用 unsigned long cast
04/11 13:39, 8F

04/12 12:22, , 9F
因為你同一個程式拿到不同平台可能就不一樣啦
04/12 12:22, 9F
文章代碼(AID): #19tzk78y (C_and_CPP)
文章代碼(AID): #19tzk78y (C_and_CPP)