c 中int 和long有区别吗?

时间:2008-07-24 05:30:22   来源:论坛整理  作者:  编辑:chinaitzhe
找以前的帖子,有人说:
在Win32中他们没有差别,都是32位,不过int型是和平台有关的,在16位的系统中它是16位,32位中是32位,64位系统中是64位,不过这些都是编译时的差别,一旦编译成目标代码,所有的东西都固定下来了。long型和平台无关,都是32位。

那int和平台相关,long和平台无关的说法又是从何而来的呢?
网友回复:int是操作系统的位数
long是固定长度的,为4个BYTE,在32位系统上,与int长度相同
网友回复:32位系统 没区别 都是32位
16位系统 int 16位,long 32位

那int和平台相关,long和平台无关的说法又是从何而来的呢?
平台无关也需要重新编译。

32位程序不能在64位系统跑成64位程序,它只是在64系统的32为环境中运行。
网友回复:是的,正如楼主所说,int在不同的机器中有不同的长度,当然,这个int是C 中的int!
而JAVA中的int就与机器无关了!都是编译器做的事情!对不对?
语言本身都是要由编译器解释给机器的撒!
不知道这样说对楼主有没有帮助!

网友回复:偶没听说过C 语言中“long与平台无关”啊。
C 标准中似乎只规定:sizeof(long)必需不小于sizeof(int),其它啥也没说。
网友回复:
引用 4 楼 steedhorse 的回复:
偶没听说过C 语言中“long与平台无关”啊。
C 标准中似乎只规定:sizeof(long)必需不小于sizeof(int),其它啥也没说。

网友回复:只知道long型的位不会小于int型的。
网友回复:sizeof(long)>=sizeof(int)
其余的都由具体的编译平台决定吧
网友回复:
引用 2 楼 artman 的回复:
32位系统 没区别 都是32位
16位系统 int 16位,long 32位

那int和平台相关,long和平台无关的说法又是从何而来的呢?
平台无关也需要重新编译。

32位程序不能在64位系统跑成64位程序,它只是在64系统的32为环境中运行。

网友回复:
引用 8 楼 fallening 的回复:
引用 2 楼 artman 的回复:
32位系统 没区别 都是32位
16位系统 int 16位,long 32位

那int和平台相关,long和平台无关的说法又是从何而来的呢?
平台无关也需要重新编译。

32位程序不能在64位系统跑成64位程序,它只是在64系统的32为环境中运行。

网友回复:
引用 3 楼 Niejihua 的回复:
是的,正如楼主所说,int在不同的机器中有不同的长度,当然,这个int是C 中的int!
而JAVA中的int就与机器无关了!都是编译器做的事情!对不对?
语言本身都是要由编译器解释给机器的撒!
不知道这样说对楼主有没有帮助!
关键字:int,long,区别,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面