当前位置: 技术问答>linux和unix
long int 和int 有啥区别啊?
来源: 互联网 发布时间:2016-10-28
本文导语: RT 都是sizeof都是4。。。。 | long int就是long int就是int 都是4个字节,那是因为你的程序是32位的,编译为64位就不一样了 在64位环境下,通常long是8字节 | 因为现在的OS都是32位...
RT
都是sizeof都是4。。。。
都是sizeof都是4。。。。
|
long int就是long
int就是int
都是4个字节,那是因为你的程序是32位的,编译为64位就不一样了
在64位环境下,通常long是8字节
int就是int
都是4个字节,那是因为你的程序是32位的,编译为64位就不一样了
在64位环境下,通常long是8字节
|
因为现在的OS都是32位运算了,int也是4字节
|
sizeof(char): 1
sizeof(short): 2
sizeof(int): 4
sizeof(long): 8
sizeof(long int): 8
sizeof(long long): 8
sizeof(void *): 8
sizeof(short): 2
sizeof(int): 4
sizeof(long): 8
sizeof(long int): 8
sizeof(long long): 8
sizeof(void *): 8
|
要看你的数据模型,典型的模型ILP32和LP64:
I就是int,L就是long,P就是指针,ILP32模型就是说在这个模型下,int long和point都是32bits的,
所以对应LP64就是说long point都是64bits的,LP64模型下int仍然是32bits的。
除此之外还有其他的模型,比如ILP64,LLP64,其中ILP64是说int long point都是64bits的,
而LLP64是说long long和point是64bits的,int long都是32bits的。
I就是int,L就是long,P就是指针,ILP32模型就是说在这个模型下,int long和point都是32bits的,
所以对应LP64就是说long point都是64bits的,LP64模型下int仍然是32bits的。
除此之外还有其他的模型,比如ILP64,LLP64,其中ILP64是说int long point都是64bits的,
而LLP64是说long long和point是64bits的,int long都是32bits的。
|
谭浩强《C程序设计》:
C语言没有具体规定以上各数据所占内存的字节数,只要求long型数据长度不短于int型,short型不长于int型。
即,
长度: long >= int >= short
C语言没有具体规定以上各数据所占内存的字节数,只要求long型数据长度不短于int型,short型不长于int型。
即,
长度: long >= int >= short
|
确实是这样
|
学习下
|
理论上long int 应当是8位,但是由于你的是32位机,所以sizeof也是4,这个与系统本身设置还有关系
|
+1
|
+!
|
是吗,那64位环境下的long long是多少位呢?
|
由于不同的cpu 建议接触新的cpu之前 首先sizeof下