C编程语言被称为零索引数组语言.使用可访问数组中的第一项0
.例如double arr[2] = {1.5,2.5}
,数组中的第一项arr
位于位置0. arr[0] === 1.5
哪些编程语言是基于1的索引?
我听说这些语言从1开始而不是0开始用于数组访问:Algol,Matlab,Action !, Pascal,Fortran,Cobol.这完整吗?
具体而言,基于1的阵列将访问具有1的第一项,而不是零.
列表可以在维基百科上找到.
ALGOL 68 APL AWK CFML COBOL Fortran FoxPro Julia Lua Mathematica MATLAB PL/I Ring RPG Sass Smalltalk Wolfram Language XPath/XQuery
Fortran从1开始.我知道因为我的爸爸在我出生之前曾经为Fortran编程(我现在33岁)并且他真的批评现代编程语言从0开始,说它不自然,不是人类的想法,不像数学,和等等.
但是,我发现从0开始的事情非常自然; 我的第一个真正的编程语言是C和*(ptr + n)如果n没有从零开始就不会那么好用!
在"数组系统交叉引用列表"表(默认基本索引列)下的" 编程语言比较"(数组)下,维基百科上有一个非常大的语言列表
这对一般的1-对0索引和订阅有很好的讨论
引用博客:
EWD831,EW Dijkstra,1982年.
当处理长度为N的序列时,我们希望通过下标区分其中的元素,下一个令人烦恼的问题是要分配给其起始元素的下标值.遵循惯例a)产生,当以下标1开始时,下标范围1≤i
备注::许多编程语言的设计都没有对此细节给予足够的重视.在FORTRAN下标总是从1开始; 在ALGOL 60和PASCAL中,已采用惯例c); 最近的SASL已经回归到FORTRAN惯例:SASL中的序列同时是正整数的函数.可怜!(备注结束.)
Fortran,Matlab,Pascal,Algol,Smalltalk等等.
你可以在Perl中完成
$[ = 1; # set the base array index to 1
如果您愿意,也可以从42开始.这也会影响字符串索引.
实际上非常不鼓励使用此功能.
同样在Ada中,您可以根据需要定义数组索引:
A : array(-5..5) of Integer; -- defines an array with 11 elements B : array(-1..1, -1..1) of Float; -- defines a 3x3 matrix
有人可能会争辩说,用户定义的数组索引范围会导致维护问题.但是,以不依赖于数组索引的方式编写Ada代码是正常的.为此,该语言提供了元素属性,这些属性是为所有已定义的类型自动定义的:
A'first -- this has the value -5 A'last -- this has the value +5 A'range -- returns the range -5..+5 which can be used e.g. in for loops
JDBC(不是语言,而是API)
String x = resultSet.getString(1); // the first column
Erlang的元组 和列表索引从1开始.
Lua-令人失望