分页: 1 / 1

c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-04-27 14:59
weihua2008
我想知道int的取值范围,long的取之范围是不是比int的大哪,我在linux下测试的结果是不大
我测试了一把,int和long一样2099999999算起来还不到2G
那么4G之痒又是哪来的哪??

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-04-30 23:30
kwarph
这个是由C++实现决定的,我的g++: gcc 版本 4.3.2 (Ubuntu 4.3.2-1ubuntu12) 32位操作系统。

代码: 全选

numeric_limits<int>::max():2147483647
numeric_limits<long>::max():2147483647
numeric_limits<long long>::max() : 9223372036854775807
long long目前还不是C++标准类型。

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-05-02 20:41
weihua2008
谢谢,我的测试的是2099999999,int和long都是这么大

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-05-02 20:56
poet
weihua2008 写了:我想知道int的取值范围,long的取之范围是不是比int的大哪,我在linux下测试的结果是不大
我测试了一把,int和long一样2099999999算起来还不到2G
那么4G之痒又是哪来的哪??
4G 之痒说的是“地址宽度”而不是“数据宽度”。

int 通常对应着缺省的数据宽度。
size_t 或者 void * 这两个类型通常对应着地址宽度。

至于 long 是否比 int 大,请你装一个 64bit ubuntu 再来做测试。

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-05-02 21:07
佚之狐L
weihua2008 写了:谢谢,我的测试的是2099999999,int和long都是这么大
这是个什么数呢?int默认算成有符号的long int,可简写为long,上限应该是2^64-1吧,我用过的几个编译器都是这么算的, :em01
不好意思,2^63-1,有一位是符号位

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-05-05 13:41
weihua2008
这话我就不懂了,默认的int你是说与long是等同的?
你说的上限应该是2^64-1这话不对,你用过啥编译器是这么算的?
你确定都是吗??

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-05-06 19:48
lightening
我们老师说int是缺省值,一般就是long.

Re: c++ 中int和long ,int和long long有区别吗,主要是表示数据的大小上??

发表于 : 2009-05-10 1:54
pollothana
int最短和short一样(2字节),最长和long一样(4字节),具体由编译器决定,不过现在应该都是4字节了。