t*********h 发帖数: 941 | 1 GCC里int和long都是32位的 貌似用起来没人和区别阿 |
w****a 发帖数: 710 | 2 看什么样的编译器了,TurboC那种16位编译器,int是两个字节long是四个字节。
32位的编译器,int=long=四字节,long long八字节。
64位的编译器,int四字节,long八字节,long long也是八字节。 |
l*******b 发帖数: 2586 | 3 64位现在貌似是long long
话说long真的不知道有什么区别了。。。大神给科普下 |
t*********h 发帖数: 941 | 4 搜了艘貌似是 我一直以为我的linux里的gcc默认是64-bit 仔细看了看好像不是 怪不
得好些int overflow改称long没有任何效果
【在 w****a 的大作中提到】 : 看什么样的编译器了,TurboC那种16位编译器,int是两个字节long是四个字节。 : 32位的编译器,int=long=四字节,long long八字节。 : 64位的编译器,int四字节,long八字节,long long也是八字节。
|
d******e 发帖数: 164 | 5 这个和平台和实现相关。C标准里面没有指定。
【在 t*********h 的大作中提到】 : GCC里int和long都是32位的 貌似用起来没人和区别阿
|
D***n 发帖数: 6804 | 6 有很多区别:
16位下的就不谈了。
Windows 下使用LLP64模型,int/long 都是32位的。
Unix下大部分使用LP64模型,int=32位,long=64位。
如果你使用long作为函数参数,那么函数的demagling 是一个问题,C++ ABI里面long
是一个独立的符号名。很多typedef的基础是int或者long,比如SInt32 32位定义为
long,64位定义为int,这样你的函数可能在不同环境下会有冲突。
【在 t*********h 的大作中提到】 : GCC里int和long都是32位的 貌似用起来没人和区别阿
|