不同平台数据类型所占字节数的理解

dir541541 2009-04-06 02:59:51
在32位系统下int 和long 所占的都是4字节
在64位系统下int 占4字节,long 占8字节

这里所说的平台是指操作系统是64位还是CPU字长是64位?
我在机器(64位字长CPU[core T2390],XP系统)上试验的结果是不同的编译器结果不同.
代码如下:

#include <stdio.h>

int main()
{
size_t i = sizeof(int);
size_t l = sizeof(long);
printf("%d,%d", i,l);
getch();
}


VS2005下结果为4,4
TC2.0下结果为2,4

是这里所说的平台是指的编译器为多少位.
或者说把这个程序放到vista系统下运行结果会是多少?
不知道这种理解是否正确.
...全文
517 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2009-04-07
  • 打赏
  • 举报
回复
个人把这三者合起来考虑(CPU+OS+Compiler)是因为:
1、64位机器也可以装32位系统(x64装XP);
2、32位机器上可以有16/32位的编译器(XP上有tc是16位的,其他常见的是32位的);
3、即使是32位的编译器也可以弄出64位的integer来(int64)。
以上这些是基于常见的wintel平台,加上我们可能很少机会接触的其它平台(其它的CPU和OS),所以个人认为所谓平台的概念是三者的组合。
虽然三者的长度可以不一样,但显然相互配合(即长度相等,32位的CPU+32位的OS+32位的Compiler)发挥的能量最大。
另外一个话题,如果只是从抽象的层面来看,每个程序有的只是虚拟的计算环境,可以不必考虑实际的环境,只需要了解虚拟环境的情况就可以了,这在不考虑移植性或者非底层编程的时候是很有帮助的,这样可以使你关注你的逻辑而不是实现。
dir541541 2009-04-07
  • 打赏
  • 举报
回复
感谢,学习了!
na2650945 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 amwfnyq 的回复:]
理论上来讲 我觉得应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。
(理论上来讲 OS应该和CPU一致才能发挥最大性能,但是实际上可以不一致,同样我认为编译器应该和OS一致,但实际上也可以不一致)
[/Quote]
学习啦。
na2650945 2009-04-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ForestDB 的回复:]
个人对平台的理解是CPU+OS+Compiler。
[/Quote]
我感觉也是。
等我学完微机原理再具体考虑下。
黄志义 2009-04-06
  • 打赏
  • 举报
回复
理论上来讲 我觉得应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算)。
(理论上来讲 OS应该和CPU一致才能发挥最大性能,但是实际上可以不一致,同样我认为编译器应该和OS一致,但实际上也可以不一致)
dir541541 2009-04-06
  • 打赏
  • 举报
回复
刚在vista下用VC6.0得出的结果是4,4
mengde007 2009-04-06
  • 打赏
  • 举报
回复
主要还是编译器,和操作系统
dir541541 2009-04-06
  • 打赏
  • 举报
回复
谁用vista试下这个看出来的结果是多少?
ForestDB 2009-04-06
  • 打赏
  • 举报
回复
个人对平台的理解是CPU+OS+Compiler。
  • 打赏
  • 举报
回复
反正int是依赖系统位数,32位机就是32bit
wuyu637 2009-04-06
  • 打赏
  • 举报
回复
实际上跟编译器和操作系统都是有关系的。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧