int和long的大小问题

万俟淋曦
人工智能领域优质创作者
博客专家认证
2018-11-11 02:45:54
我的电脑是64位机,为什么int和long都是4字节,64位机的long不应该是8字节吗?
有图有真相


...全文
442 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2018-11-20
  • 打赏
  • 举报
回复
https://en.cppreference.com/w/cpp/language/types
牛奶土豆 2018-11-18
  • 打赏
  • 举报
回复
#3 正解,需要看系统采用的数据模型,以及编译器等。实践出真知,尽信书不如无书
zjglizhen 2018-11-17
  • 打赏
  • 举报
回复
对于long的解释,不同平台要具体测试一下。
领域灬alone 2018-11-16
  • 打赏
  • 举报
回复
sorry,没看到上面的回复,windows上long就是4位的,这货LONGLONG才是8位的
领域灬alone 2018-11-16
  • 打赏
  • 举报
回复
你进程多少位的亲
赵4老师 2018-11-12
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
AlbertS 2018-11-12
  • 打赏
  • 举报
回复
对于long的解释,不同平台是不一样的,64位 的linux一般解释为8个字节,但是64位的windows据说是为了优化,还是解释为4个字节,但是指针都是8个字节
真相重于对错 2018-11-12
  • 打赏
  • 举报
回复
64位 是 long long 而非long
smwhotjay 2018-11-11
  • 打赏
  • 举报
回复
__int64 就是8个字节的吧
zangfong 2018-11-11
  • 打赏
  • 举报
回复
跟系统的数据模型有关。64位Windows使用LLP64数据模型,除了指针是64位,其他基本类型都没有变,long占据的是4个字节。而64位的类Unix平台均使用LP64数据模型,在该系统下,long占据8个字节。 可以查看一下MS的文档: In 64-bitWindows, this assumption of parity in data type sizes is invalid. Making all data types 64 bits in length would waste space, because most applications do not need the increased size. However, applications do need pointers to 64-bit data, and they need the ability to have 64-bit data types in selected cases. These considerations led to the selection of an abstract data model called LLP64 (or P64). In the LLP64 data model, only pointers expand to 64 bits; all other basic data types (integer and long) remain 32 bits in length 链接如下: https://docs.microsoft.com/zh-cn/windows/desktop/WinProg64/abstract-data-models
万俟淋曦 2018-11-11
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:
还要编译器也是64位编译出exe,否则还是32位的exe
是64位编译的呀
smwhotjay 2018-11-11
  • 打赏
  • 举报
回复
还要编译器也是64位编译出exe,否则还是32位的exe

33,311

社区成员

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

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