C的数组下标能用long?

想喝咖啡的貓 2011-09-09 10:03:11
RT,某C程序员到Java区踢场子,说他用long定义C数组下标,嫌Java数组下标只能用int不够大(既C的int32_t)...
C的数组下标能定义到int64_t这么大吗?

这是原话:

我想说,long表示下标我都觉得不够,动辄上亿的数据量,以TB、PB、为单位的数据量,int能用个鬼。
别觉得不切实际,以后大家的硬盘、内存的容量不知道会大到什么程度,存储啊、用于分析什么什么的需要的容量更是天文数字,CPU的单位也进入64了,我估计128、512也不远了。int21亿的表示范围已经不够用了。
...全文
567 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
alcz2008 2011-09-12
  • 打赏
  • 举报
回复
是看计算机是多少位的。。。
具体而言:
32位机上,虚拟内存,也就是数组的地址0--2^32-1,所谓int;
64位机上,虚拟内存,也就是数组的地址0--2^64-1....

楼主说对记得加分啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。
狮子小宝 2011-09-12
  • 打赏
  • 举报
回复
你可以sizeof(long),sizeof(int),一下,发现,结果是4,也就是说,int和long类型的长度都是32bit,故两者做数组的下标,表示的范围一样
yxl00000000 2011-09-12
  • 打赏
  • 举报
回复
好好学习,天天向上,不知道来学习。
孤独小剑 2011-09-12
  • 打赏
  • 举报
回复
哗众取宠……
Athenacle_ 2011-09-10
  • 打赏
  • 举报
回复
绝对是TC程序员~OUT了
wizard_tiger 2011-09-10
  • 打赏
  • 举报
回复
理论上是可以的,不过要那么大的数组有什么用?
AnYidan 2011-09-09
  • 打赏
  • 举报
回复
好像记得 c 中有一句话, int 可以表示所有数组的下标
ljhhh0123 2011-09-09
  • 打赏
  • 举报
回复
难道我要处理1TB的数据就要用1TB的内存吗?
ming_road 2011-09-09
  • 打赏
  • 举报
回复
理论上是可以的
xunxun 2011-09-09
  • 打赏
  • 举报
回复
什么意思?
数组么
弄那么大的数组干啥啊
jackyjkchen 2011-09-09
  • 打赏
  • 举报
回复
所以malloc的分配内存空间上的能力,理论上已经远远超过了计算机硬件的水平

现在的x64机器,为了经济和可行,都没实现64位寻址,windows就只有44位,16TB
jackyjkchen 2011-09-09
  • 打赏
  • 举报
回复
2^64就是16EB=16*1204PB=16*1024*1024TB

在EB面前,TB和PB算个鸟
jackyjkchen 2011-09-09
  • 打赏
  • 举报
回复
32位机器上,通常的编译器都是int和long一样的32位……

大约20亿的上限,无符号就是41亿多……

malloc的参数size_t,x64下size_t是long long,2^64

不知楼主在说什么,难道是TC……

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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