码迷,mamicode.com
首页 > 其他好文 > 详细

64位系统和32位系统下的short、int、long数据的宽度

时间:2014-10-13 17:28:39      阅读:1233      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   使用   ar   sp   数据   on   代码   

不同的编译器根据不同的 64 位模型有所不同。

比如 Visual C++,从第一个支持 64 位的版本起,一直就是使用 LLP64 内存模型,也就是说,编译出的代码除了 long 和指针是 64 位,int 保持 32 位不变。
可以运行下代码得到结果。
#include <stdio.h>
int main()
{
printf("char: %d\n",sizeof(char));
printf("char *: %d\n",sizeof(char *));
printf("short: %d\n",sizeof(short));
printf("short *: %d\n",sizeof(short *));
printf("int: %d\n",sizeof(int));
printf("int *: %d\n",sizeof(int *));
printf("long: %d\n",sizeof(long));
printf("long *: %d\n",sizeof(long *));
}
在一台x86_64系统上运行结果:
char: 1
char *: 8
short: 2
short *: 8
int: 4
int *: 8
long: 8
long *: 8
在一台i386系统上运行结果:
char: 1
char *: 4
short: 2
short *: 4
int: 4
int *: 4
long: 4
long *: 4

在32位中,short=2 int=long=4
在64位中,short=2,int=4,long=8

1. 指针类型表示的是内存寻址范围,所以在32位系统,8 * 4 = 32,而64位系统 8 * 8 = 64;这个是没错的;
2. C99标准规定:sizeof(short) <= sizeof(int) <= sizeof(long).

http://zhidao.baidu.com/link?url=wrvmVbgFV-yPVAq_6O5O8Kf27QCvyCsPYjts7Z1zVXAxDBAS0RhrdM_Y-jiutPMmRgQWkByUwJ2HBMr-rvZP-_

64位系统和32位系统下的short、int、long数据的宽度

标签:style   http   io   使用   ar   sp   数据   on   代码   

原文地址:http://www.cnblogs.com/mylinux/p/4022347.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!