社区
C语言
帖子详情
64位机器中int占几个字节
yangna0534
2011-12-27 01:09:08
16位机器,int占2B,32位占4B。
tc编译器占2B,vc占4B。
在xp系统里运行TC,int占多少字节。在win 7里运行又占多少字节?
谁能告诉我,内存大小是由硬件决定的?还是编译器的原因,还是什么?编译器又在编译代码时担任了什么角色。
...全文
10229
14
打赏
收藏
64位机器中int占几个字节
16位机器,int占2B,32位占4B。 tc编译器占2B,vc占4B。 在xp系统里运行TC,int占多少字节。在win 7里运行又占多少字节? 谁能告诉我,内存大小是由硬件决定的?还是编译器的原因,还是什么?编译器又在编译代码时担任了什么角色。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bjbjbh
2011-12-27
打赏
举报
回复
[Quote=引用 2 楼 nibiewuxuanze 的回复:]
另一方面是编译器的支持情况了,TC是在16位环境中运行的,所以int只有16位。win7应该已经不能运行TC这样的16位程序了。
[/Quote]
不是吧,我的win7旗舰版 运行TC没问题。
bjbjbh
2011-12-27
打赏
举报
回复
[Quote=引用 2 楼 nibiewuxuanze 的回复:]
另一方面是编译器的支持情况了,TC是在16位环境中运行的,所以int只有16位。win7应该已经不能运行TC这样的16位程序了。
[/Quote]
不是吧,我的win7旗舰版 运行TC没问题。
cfvmario
2011-12-27
打赏
举报
回复
如果需要指定大小,就用__int32,__int64呗
int尽量少用,歧义。
AnYidan
2011-12-27
打赏
举报
回复
[Quote=引用 7 楼 zhao4zhong1 的回复:]
一个int占多少个字节既由编译器决定,也由CPU或虚拟机或操作系统决定,但归根结底是由编译器决定。
[/Quote]
windows 7, vs2010, sizeof(int) = 4;
chayedanwc
2011-12-27
打赏
举报
回复
C/C++仅仅定义了这些基本数据类型之间的关系,并没有定义严格定义它们的字长。在不同的平台上,根据编译器不同的实现,它们的字长如下表所示:
数据类型 LP64 ILP64 LLP64 ILP32 LP32
char 8 8 8 8 8
short 16 16 16 16 16
_int32 N/A 32 N/A N/A N/A
int 32 64 32 32 16
long 64 64 32 32 32
long long N/A N/A 64 N/A N/A
pointer 64 64 64 32 32
在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位平台上的字长模型。
LP64意思是long和pointer是64位,ILP64指 int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。
32位Windows采用的是ILP32数据模型,64位Windows采用的是LLP64数据模型。
所以,Windows上的32位程序设计和64位程序设计最大的不同(也就是IP32和LLP64的不同),就在于指针的长度不同??由32位变成了64位。
chayedanwc
2011-12-27
打赏
举报
回复
C/C++仅仅定义了这些基本数据类型之间的关系,并没有定义严格定义它们的字长。在不同的平台上,根据编译器不同的实现,它们的字长如下表所示:
数据类型 LP64 ILP64 LLP64 ILP32 LP32
char 8 8 8 8 8
short 16 16 16 16 16
_int32 N/A 32 N/A N/A N/A
int 32 64 32 32 16
long 64 64 32 32 32
long long N/A N/A 64 N/A N/A
pointer 64 64 64 32 32
在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位平台上的字长模型。
LP64意思是long和pointer是64位,ILP64指 int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。
32位Windows采用的是ILP32数据模型,64位Windows采用的是LLP64数据模型。
所以,Windows上的32位程序设计和64位程序设计最大的不同(也就是IP32和LLP64的不同),就在于指针的长度不同??由32位变成了64位。
chayedanwc
2011-12-27
打赏
举报
回复
C/C++仅仅定义了这些基本数据类型之间的关系,并没有定义严格定义它们的字长。在不同的平台上,根据编译器不同的实现,它们的字长如下表所示:
数据类型 LP64 ILP64 LLP64 ILP32 LP32
char 8 8 8 8 8
short 16 16 16 16 16
_int32 N/A 32 N/A N/A N/A
int 32 64 32 32 16
long 64 64 32 32 32
long long N/A N/A 64 N/A N/A
pointer 64 64 64 32 32
在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位平台上的字长模型。
LP64意思是long和pointer是64位,ILP64指 int,long,pointer是64位,LLP指long long和pointer是32-bit的。ILP32指int,long和pointer是32位的,LP32指long和pointer是32位的。
32位Windows采用的是ILP32数据模型,64位Windows采用的是LLP64数据模型。
所以,Windows上的32位程序设计和64位程序设计最大的不同(也就是IP32和LLP64的不同),就在于指针的长度不同??由32位变成了64位。
赵4老师
2011-12-27
打赏
举报
回复
一个int占多少个字节既由编译器决定,也由CPU或虚拟机或操作系统决定,但归根结底是由编译器决定。
luciferisnotsatan
2011-12-27
打赏
举报
回复
[Quote=引用 4 楼 mingliang1212 的回复:]
编译器充当了实现C语言标准规定的内容的工具,但是编译器用什么方式来实现这些内容,很多情况下,C语言标准是不规定的.
C语言标准也不规定一个int类型应该是多少字节.所以不同编译器可以有不同大小都是合乎标准的.
所以不要写依赖这些变量的大小的代码,否则你写的代码可移植性差.
[/Quote]
++
通常,64位里int还是4字节,long成了8字节
gqjjqg
2011-12-27
打赏
举报
回复
代码 -》编译器-》机器码
机器码-》硬件-》执行
OS内存大小果断由内存条决定,当然虚拟内存啥的就不包括在内。
你没装过VS吗? 去微软官网一看,有X86和X64俩版本的。
编译器只是负责编译出在指定硬件平台上执行的机器码而已。
要是硬件不同,他们的机器指令集也会不同,就导致不同平台的兼容性问题。
所以 XP 有X86和X64,WIN7也是如此。
装的都是16位的编译器,那么int 都是 2B的,装的32位的,int 就是4B的。
和编译器有关系,和平台无关。
当然编译器一般都会和平台兼容,根据OS支持的字长来...
iamnobody
2011-12-27
打赏
举报
回复
编译器充当了实现C语言标准规定的内容的工具,但是编译器用什么方式来实现这些内容,很多情况下,C语言标准是不规定的.
C语言标准也不规定一个int类型应该是多少字节.所以不同编译器可以有不同大小都是合乎标准的.
所以不要写依赖这些变量的大小的代码,否则你写的代码可移植性差.
薛定谔之死猫
2011-12-27
打赏
举报
回复
编译器决定的,当然编译器会判断宿主系统支持的字长情况~
建鼎呓语
2011-12-27
打赏
举报
回复
另一方面是编译器的支持情况了,TC是在16位环境中运行的,所以int只有16位。win7应该已经不能运行TC这样的16位程序了。
建鼎呓语
2011-12-27
打赏
举报
回复
int的长度跟机器长度一致,16位机器int就是16位,类似的32位、64位等等。
C语言实现 数据类型
占
多少
字节
指针
占
多少
字节
具体代码如下所示: #include
void main() { //使用sizeof验证数据类型在内存
中
占
用的空间大小 // char //
int
// short // long // unsigned
int
// float // double // long double pr
int
f(在
64位
机器
中
:\n); pr
int
f( char类型
占
%d个
字节
\n,sizeof(char)); pr
int
f( short类型
占
%d个
字节
\n,sizeof(short)); pr
int
f(
int
类型
占
C/C++基本数据类型所
占
字节
数
关于这个基本的问题,很早以前很清楚了,C标准
中
并没有具体给出规定那个基本类型应该是多少
字节
数,而且这个也与
机器
、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下
int
类型为
占
4个
字节
;而tuborC下则是2个
字节
。 所以
int
,long
int
,short
int
的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): sizeof(short
int
)<=sizeof(
int
) sizeof(
int
)<=sizeof(long
int
) short
int
至少应为16位(2
字节
) long
int
至少应为32位。
c语言
int
占
几个
字节
vc,
int
类型
占
几个
字节
在java
中
,
int
类型
占
四个
字节
,而byte类型
占
一个
字节
在java
中
,
int
类型
占
四个
字节
,而byte类型
占
一个
字节
。这句话在内存
中
怎不是的,你这是理解错误,也是被混洧了,是初学者最容易犯的错。
int
四
字节
没错 byte一
字节
也没错 但一个
字节
有8位哦。 先看byte,byte
占
一
字节
,一
字节
等于八位 我们来看看一个位能表示多少东西: 最小0 最大1 表示 2的1次方 再看看两个位能表示i...
c语言
中
32位整数用谁标识,
int
占
几个
字节
手机评站网今天精心准备的是《
int
占
几个
字节
》,下面是详解!
int
占
多少
字节
?
int
有short
int
,
int
,long
int
三种形式,它们分别
占
多少
字节
?如果只输入
int
,它是不是可以包含以上三种形式?...
int
有short
int
,
int
,long
int
三种形式,它们分别
占
多少
字节
?如果只输入
int
,它是不是可以包含以上三种形式?
int
占
4个
字节
。常用单片机,short和
int
型至少为16...
python
中
int
占
几个
字节
_小白学python第1问:
int
占
几个
字节
?
windows
64位
机器
,python3.7;后面的文章
中
,没有特别说明的话,都是在该环境下运行
int
占
几个
字节
?C语言
中
(GCC编译器),
int
占
据4个
字节
,python呢?我们用python内置的 sys.getsizeof 方法来看看28个
字节
! 也就是说
int
是
占
据 28个
字节
吗? 再看看下面的又多了4个
字节
!事实上,上面的 1073741824 = 2**30,我们可以试试sy...
C语言
69,393
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章