动漫网站开发,沧州网站建设制作设计优化,wordpress首页悬浮框,最新网页传奇游戏最近在看深入理解计算机系统这本书#xff0c;上面提到了在32位机器和64机器中int类型都占用4个字节。后来#xff0c;查了The C Programming language这本书#xff0c;里面有一句话是这样的#xff1a;Each compiler is free to choose appropriate sizes for its own ha… 最近在看深入理解计算机系统这本书上面提到了在32位机器和64机器中int类型都占用4个字节。后来查了The C Programming language这本书里面有一句话是这样的Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are at least 16bits, longs are at least 32bits, and short is no longer than int, which is no longer than long.意思大致是编译器可以根据自身硬件来选择合适的大小但是需要满足约束short和int型至少为16位long型至少为32位并且short型长度不能超过int型而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节例如GCC。下面列举在GCC编译器下32位机器和64位机器各个类型变量所占字节数 C类型 32 64 char 1 1 short int 2 2 int 4 4 long int 4 8 long long int 8 8 char* 4 8 float 4 4 double 8 8 需要说明一下的是指针类型存储的是所指向变量的地址所以32位机器只需要32bit而64位机器需要64bit。
以上文章来自http://charlesxie.blog.51cto.com/2236179/939680由于写的太好了所就直接摘了下来 补充总结
经过询问网上查找以及测试发现 数据类型占内存的位数实际上与操作系统的位数和编译器不同编译器支持的位数可能有所不同都有关具体某种数据类型占字节数得编译器根据操作系统位数两者之间进行协调好后分配内存大小。具体在使用的时候如想知道具体占内存的位数通过sizeof(int)可以得到准确的答案。