首页 > 代码库 > int 和 long的区别
int 和 long的区别
数据模型决定了C语言中基本数据类型与数据宽度的对应关系。我们常用的32位模型称为ILP32,而64位模型有三种:LP64、LLP64和ILP64。在64位模型中,指针一定是64位的,但是int和long的宽度则在不同的数据类型中有不同的定义。如下表:
datatype | LP32 | ILP32 | LLP64 | LP64 | ILP64 |
char | 8 | 8 | 8 | 8 | 8 |
short | 16 | 16 | 16 | 16 | 16 |
int | 16 | 32 | 32 | 32 | 64 |
long | 32 | 32 | 32 | 64 | 64 |
long long | 64 | 64 | 64 | 64 | 64 |
pointer | 32 | 32 | 64 | 64 | 64 |
从前的DOS是应该是LP32;现在的Windows 32和Linux 32是ILP32;在即将流行的64bits世界,Windows x64 版采用的是LLP64模型,Linux64采用的是LP64模型,用gcc编译时可以指定-m32按照ILP32模型进行编译。
指针大小跟机器字长相关。为了兼容,在写C代码时,用int声明32bit整数,用long long声明64bit整数。
按照POSIX的规定,一个整型的正确格式化串为:
sign | char | short | int | long | long long |
signed | %hhd | %hd | %d | %ld | %lld |
unsigned | %hhu | %hu | %u | %lu | %llu |
int 和 long的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。