当前位置:  开发笔记 > 编程语言 > 正文

是否有其他常见的"c-like"或非"c-like"语言具有非零索引数组位置?

如何解决《是否有其他常见的"c-like"或非"c-like"语言具有非零索引数组位置?》经验,为你挑选了9个好方法。

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的第一项,而不是零.



1> LJM..:

列表可以在维基百科上找到.

ALGOL 68
APL
AWK
CFML
COBOL
Fortran
FoxPro
Julia
Lua
Mathematica
MATLAB
PL/I
Ring
RPG
Sass
Smalltalk
Wolfram Language
XPath/XQuery


维基百科上的东西不完全正确吗?说它不是这样的!
@Yannick:你知道维基百科可以被任何人编辑,对吧?为什么抱怨不准确; 只是纠正他们!
实际上,BASIC有很多*,特别是在这一点上.
请注意,它显示"默认基本索引",因此该部分是正确的.然而,不正确的是,BASIC中的默认基本索引仍为0,而不是一个 - 所以我修复了这个问题.
@ ST3,它可能是它的工作原理,但PHP仍然称它们为数组,它们的基本行为(使用它们而不指定键)就像数组一样.
我在谈论'可指定的基本索引',它可以通过`OPTION BASE {0 | 1}`,通过在声明`DIM MyArray(-19到20)As Integer`时指定下限.DOS BASIC中的默认基本索引仍为1.

2> Adrian Smith..:

Fortran从1开始.我知道因为我的爸爸在我出生之前曾经为Fortran编程(我现在33岁)并且他真的批评现代编程语言从0开始,说它不自然,不是人类的想法,不像数学,和等等.

但是,我发现从0开始的事情非常自然; 我的第一个真正的编程语言是C和*(ptr + n)如果n没有从零开始就不会那么好用!


+1:但是你的父亲几乎与我在同一时间开始编程时,真的是你的父亲.我希望当他教你数数时,他会教你一头牛,两头牛,三头牛......现在谁不自然了!
等等,这是否意味着在写作时你是33或34?
33,这是他的第34个年头
@High Performance Mark奶牛当然不自然.它们应该从0头奶牛开始.
在计算项目时,甚至C程序员都没有说有0项,如果有1项!但是第1项仍然可以有效地在索引0处.

3> DVK..:

在"数组系统交叉引用列表"表(默认基本索引列)下的" 编程语言比较"(数组)下,维基百科上有一个非常大的语言列表

这对一般的1-对0索引和订阅有很好的讨论

引用博客:

EWD831,EW Dijkstra,1982年.

当处理长度为N的序列时,我们希望通过下标区分其中的元素,下一个令人烦恼的问题是要分配给其起始元素的下标值.遵循惯例a)产生,当以下标1开始时,下标范围1≤i

备注::许多编程语言的设计都没有对此细节给予足够的重视.在FORTRAN下标总是从1开始; 在ALGOL 60和PASCAL中,已采用惯例c); 最近的SASL已经回归到FORTRAN惯例:SASL中的序列同时是正整数的函数.可怜!(备注结束.)


Dijkstra当然会提出一个非常偏见的观点.考虑到大多数人会将基于1的阵列的范围描述为"1≤i≤N",这比"0≤i≤N-1"好很多.
许多非cs工程师会(并且确实)不同意Dijkstra的一些观点,因为在远离键盘的数学1中仍然是数组的"默认"第一元素.

4> High Perform..:

Fortran,Matlab,Pascal,Algol,Smalltalk等等.


Pascal数组可以从任何索引开始,不一定是0或1

5> Thilo..:

你可以在Perl中完成

$[ = 1;  # set the base array index to 1

如果您愿意,也可以从42开始.这也会影响字符串索引.

实际上非常不鼓励使用此功能.



6> Schedler..:

同样在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



7> Thilo..:

JDBC(不是语言,而是API)

String x = resultSet.getString(1);  // the first column


+1这是完全的疯狂,每次都让我感到高兴,因为Java中的其他一切都是零基础的!
这可能是因为SQL也使用了基于1的索引,例如`ORDER BY 1`(第一列)或`SUBSTRING(name,2)`(从第二个字符开始)

8> Greg Hewgill..:

Erlang的元组 和列表索引从1开始.



9> matja..:

Lua-令人失望


lua从1开始的索引有什么问题?我使它对初学者编程更加友好。
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有