[問題] long v.s long long int

看板C_and_CPP (C/C++)作者 (~"~)時間15年前 (2011/06/09 23:58), 編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/4 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux gcc 問題(Question): long 跟 long long int 的差別 請問一下 我用的是linux 64bit 在網路上看到很多網站都說 long 是4個bytes 而 long long int 是8個 但是我自己用sizeof 印的時候 兩個都跑出8欸@@ 請問一下這是因為我用的是64bit 的機器嗎? 還是說是網站上寫錯了? long 跟 int 跟 long long int 三個的關係是...?? ---------------- 附上code: #include <stdio.h> int main(){ printf("size of long is %d \n",sizeof(long)); printf("size of long long int is %d \n",sizeof(long long int)); printf("size of long int is %d \n",sizeof(long int )); return 0; } output: 都是 8 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.192

06/10 00:02, , 1F
標準只跟你保證下限而已, 要多大看 compiler 實作
06/10 00:02, 1F

06/10 00:19, , 2F
64bits的lu 通常都是8,我是以自己公司的機器為例
06/10 00:19, 2F

06/10 00:25, , 3F
<stdint.h>
06/10 00:25, 3F

06/10 00:30, , 4F
注意一下印 size_t 的 specifier, 一定不是 %d
06/10 00:30, 4F

06/10 00:37, , 5F
所以long 是 4 bytes 沒錯呴
06/10 00:37, 5F

06/10 00:40, , 6F
<stdint.h> 看看吧.. 只有裡面的型態可以給你明確大小
06/10 00:40, 6F

06/10 00:41, , 7F
而且可以做 type-safe IO
06/10 00:41, 7F

06/10 01:28, , 8F
標準只有規定long >= int >= short >= char
06/10 01:28, 8F

06/10 01:28, , 9F
千萬別假設 int 或 long 是 4byte
06/10 01:28, 9F
文章代碼(AID): #1DyEsSMY (C_and_CPP)
文章代碼(AID): #1DyEsSMY (C_and_CPP)