您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
为什么很多编程语言要把0设置为第一个元素下标索引,而不是直观的1?
下标,是从,第一个为什么很多编程语言要把0设置为第一个元素下标索引,而不是直观的1?
发布时间:2020-12-06加入收藏来源:互联网点击:
为什么很多编程语言要把0设置为第一个元素下标索引,而不是直观的1?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
要解释就一个词:偏移量。这个下标是用来表示相对第一个元素的距离而不是用来给你数的。
回答于 2019-09-11 08:43:50
做为一个三十多年用C,C++编程的人,第一次碰见有人问这问题。
的确是这样,不论是数组、字符串,还是指针,无一例外要从0开始访问。
char ch_array[4096];
for(int i=0;i<4096;i++)
ch_array[i]=30;
如果写成for(i=1;i<=4096;i++)ch_array[i]=30;
不仅错误,而且难看。
我想之所以从0开始,有几方面原因:
1,零是一个里程碑。
在高等数学中,老师会强调0的意义。如数列,必须给第0项f(X0)的值,有了f(X0)的基础,其它才顺理成章。
2,在编程中,约定俗成,从0开始。
软件开发人员互相交流,都是以0为基础。如要查第6名的成绩,自然是打印score[5]的值,而不是score[6]。否则交流会很累。
当然,显示输出时,肯定会显示”第6名成绩”是多少:
printf(“第%d名成绩是%d分”,num+1,score[num]);
3,我觉得,从0开始,与西方人的习惯有关。
西方人住别墅的多,别墅的地面那一层,为车库,所以叫GROUND层,而习惯上把第二层才叫1st floor。
我们国家直接把地面这层就叫第一层。
西方人习惯上的这种认知,自然带到了编程上。谁让早先的编程软件都是人家发明的呢!
for(int i=0;i<4;i++)
printf(”电梯到第%d层了!”,i);
一目了然。
以上是我的一点看法。编程软件已经有半个世纪的历程了,确切的答案,只能等西方国家的一些保密文件解密后才会有最正确的答案。但有一点,这些先贤们的想法真的很一致,那就是,万事从0开始,有0才会有1,才会有无穷。
回答于 2019-09-11 08:43:50
计算机的基础是二进制。拿有符号8位整数来说,最小的二进制整数是00000000,-1是11111111。没有道理舍弃0不用。你有这种疑惑是因为你是从自然数的角度考虑的,但是实际上从十进制数字的角度来看,也是从0开始的。0123456789,然后进位,就是10了。
回答于 2019-09-11 08:43:50
因为C语言设计的时候,下标就是从0开始的。以至于后来者都纷纷效仿,就这么约定俗成了。
回答于 2019-09-11 08:43:50
首先,直观不不直观,是你个人的感受,不代表它本来应该如此,坐标系内原点值是0才是常识
回答于 2019-09-11 08:43:50
早期,Fortran默认是以1为首索引数(熟悉这个语言的知道它的索引数甚至可以设置为负数)。以0为首索引数是C语言带起来的,好处是计数器从不需要初始化,直接就从00000000开始。
回答于 2019-09-11 08:43:50
有啊,basic就是从1开始的,0是c语言引入,c语言本身是一种贴近底层的高级语言,用0是因为实际上下标就是内存指针。后来的编程语言大多受c影响巨大,因此很多都约定俗成用0做下标。如果设计者愿意java python go JavaScript 等等语言都可以用1作为数组下标起始。
回答于 2019-09-11 08:43:50
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |