C++中,整形int与长整形long的区别?他们不都是四个字节,32位吗?

如题所述

C++标准只规定int型数据所占的字节数不大于long型,不小于short型。你说的情况在32位的机子上才是这样。作如下比较:
16位平台
char 1个字节8位
short 2个字节16位
int 2个字节16位
long 4个字节32位
指针 2个字节
32位平台
char 1个字节8位
short 2个字节16位
int 4个字节32位
long 4个字节
long long 8个字节
指针 4个字节
64位平台
char 1个字节
short 2个字节
int 4个字节
long 8个字节(区别)
long long 8个字节
指针 8个字节(区别)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-05
在32位机器上int和long是相同的,都是32位。下面是《C++ primer》中的描述:“一般地,short类型为半个机器字(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中,int类型和long类型通常字长是相同的)。“
第2个回答  2016-09-24

C++标准没有规定int和long一定是32位,它只是规定了:

    int 至少16位,并且在32位和64位系统,int至少32位;

    long至少32位;


在有些平台上可能int是32位、long是64位、long long是128位。你不能假定sizeof( int ) == sizeof( long ) == 4字节,但是你可以保证long能够保存32位的整形数据。


int类型是目标平台最佳的整数类型,所以如果你操作的数据不是很大,请使用int类型,不要使用short或者long。

第3个回答  2011-09-19
long与int所占字节数由于操作系统或编译器的不同而变化。
有些编译器中int是二个字节,但有些是四个字节。
long一般都是四个字节的。

规定long不能比int短,short不能比int长

好好看书吧
第4个回答  2011-09-05
c++ primer中int 是16位的,long是32位的,但是具体的位数和机器相关。在32位机器上用sizeof看都是一样的是32位的。不同机器上不同。所以容器多用自己定义的类,屏蔽不同机器带来的差异。
相似回答