64位计算机sizeof(int)==4的问题

vuqrzk5w 2013-05-28 05:41:40
上次问人,大家说,sizeof的结果是由编译器(或者说是编译选项)决定的,而不是操作系统.
我用的dev-c,哪里设置编译选项呢?
sizeof(int)是4,而sizeof(char*)是8,说明它还是认本机是64位的.

关于int,标准是怎么定义的,我搜了好多,没有找到.(不要说MSDN了,它不能算是C语言标准定义吧)
...全文
894 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjfdqchwhj 2013-11-25
  • 打赏
  • 举报
回复
引用 2 楼 nice_cxf 的回复:
为了兼容性考虑把,大部分64位编译器int的长度都是4,指针的长度是8
恩,您说的倒是有点道理。 不过,如何知道编译器是“32位编译器” 还是 64bits 的呢?
cjfdqchwhj 2013-11-25
  • 打赏
  • 举报
回复
引用 1 楼 zhangwuji154 的回复:
int 已经定型了,就4字节.
没有吧。。。
cjfdqchwhj 2013-11-25
  • 打赏
  • 举报
回复
引用 7 楼 ForestDB 的回复:
标准只规定short <= int <= long,其它的没规定。 从实现的角度来看,一般使得int和CPU位数一样大,比较有效率,比如32位的情形; 当然64位的环境,为了保持一定的向后兼容性,实现可以选择依然是32位。
您确定 short <= int <= long ?? 据我所知,int 代表的是一个机器字长,但是编译器如何解释 int,也是我一直迷惑的问题。
ForestDB 2013-05-29
  • 打赏
  • 举报
回复
-std=c99只是表示语法遵循c99标准 所谓的“实现决定”,可以看看<climit>这样的头。
vuqrzk5w 2013-05-29
  • 打赏
  • 举报
回复
引用 7 楼 ForestDB 的回复:
标准只规定short <= int <= long,其它的没规定。 从实现的角度来看,一般使得int和CPU位数一样大,比较有效率,比如32位的情形; 当然64位的环境,为了保持一定的向后兼容性,实现可以选择依然是32位。
这么说,确实是编译器决定的喽?有没有编译选项来决定这个事,比如就像-std=c99之类的
赵4老师 2013-05-29
  • 打赏
  • 举报
回复
运行 64位命令行编译器 /? 自己看其内容?
ForestDB 2013-05-28
  • 打赏
  • 举报
回复
标准只规定short <= int <= long,其它的没规定。 从实现的角度来看,一般使得int和CPU位数一样大,比较有效率,比如32位的情形; 当然64位的环境,为了保持一定的向后兼容性,实现可以选择依然是32位。
lin5161678 2013-05-28
  • 打赏
  • 举报
回复
引用 1 楼 zhangwuji154 的回复:
int 已经定型了,就4字节.
胡说
evencoming 2013-05-28
  • 打赏
  • 举报
回复
不知道有没有下面这条规则. sizeof(int) <= sizeof(int*) 不过c++本来就是没有规定各个类型的大小. 那是实现的问题. 不必纠结
derekrose 2013-05-28
  • 打赏
  • 举报
回复
int是几位跟计算机是几位的有关系吗
ayrb13 2013-05-28
  • 打赏
  • 举报
回复
long 应该是64位的了
nice_cxf 2013-05-28
  • 打赏
  • 举报
回复
为了兼容性考虑把,大部分64位编译器int的长度都是4,指针的长度是8
zhangwuji154 2013-05-28
  • 打赏
  • 举报
回复
int 已经定型了,就4字节.

33,311

社区成员

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

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