是否有其他常见的“C类”或非“C类”与非零指数阵列位置的语言吗? [关闭](Are there

2019-07-20 06:32发布

C编程语言被称为零索引阵列语言。 在阵列中的第一项是使用可访问的0 。 例如double arr[2] = {1.5,2.5}中数组的第一项arr是在位置0 arr[0] === 1.5什么编程语言1个基于索引?

我听说过这些语言从1开始,而不是0的数组访问:大陵,MATLAB,行动!帕斯卡,Fortran语言,COBOL。 这是完整的?

Specificially,1-基于阵列将与1,而不是零访问的第一项。

Answer 1:

名单上可以找到维基百科 。

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


Answer 2:

Fortran语言从1开始。我知道,因为我的爸爸用于FORTRAN程序在我出生前(我33了),他确实批评了现代编程语言为从0开始,说这是不自然的,人类没有怎么想的,不像数学和等等。

不过,我觉得事情从0开始很自然的; 我的第一个真正的编程语言是C和*(PTR + N)就不会这么好听如果n没有在零开始工作!



Answer 3:

的语言一个相当大的列表是在维基百科下编程语言(阵列)的比较 “阵列系统交叉引用列表”下表(默认基索引列)

这具有1-与0-索引一般一个良好的讨论和订阅

从博客引用:

由EW Dijkstra算法,1982年EWD831。

当与长度为N的序列处理,其中,我们希望由下标区分元件,下一个令人烦恼的问题是什么下标值分配给它的启动元件。 用下标1开始时附着于约定)的产率,中,下标范围1≤I <N + 1; 从0开始,然而,给出了更好的范围0≤I <N.因此,让我们让我们的序数从零开始:一个元素的序数(下标)等于所述序列中它前面的元素的数量。 而故事的寓意是,我们有-after所有这些百年好一点! - 零作为最自然数。

备注::很多编程语言已经被设计为无适当注意这个细节。 在FORTRAN标总是从1开始; 在ALGOL 60和PASCAL,会议c)中已被采用; 更近的SASL已回落在FORTRAN约定:在SASL序列是在同一时间上的正整数的函数。 可怜! (注完。)



Answer 4:

Fortran语言,MATLAB,帕斯卡尔,大陵,Smalltalk和许多其他许多人。



Answer 5:

你可以在Perl做

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

你也可以把它开始与42,如果你觉得这样的。 这也影响字符串索引。

事实上,使用功能非常气馁。



Answer 6:

此外,在阿达您可以根据需要定义数组索引:

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


Answer 7:

Erlang的元组和列表指数从1开始。



Answer 8:

JDBC(不是一种语言,而是API)

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


Answer 9:

卢阿 - 令人失望



Answer 10:

找到一个- 的Lua(编程语言)

检查数组一节它说 -

“的Lua阵列1基于:所述第一索引为1而不是0,因为它是许多其他的编程语言(虽然为0的显式索引是允许的)”



Answer 11:

VB经典,至少通过

Option Base 1


Answer 12:

在字符串德尔福从1开始。

(静态阵列必须具有下界明确指定的。动态数组总是从0开始。)



Answer 13:

ColdFusion的 - 即使它是Java的引擎盖下



Answer 14:

有和Pascal。



Answer 15:

PL / SQL 。 使用从0开始的时候语言与甲骨文互动,你需要自己处理0-1转换为通过索引数组访问这样的一个结果是。 在实践中,如果你使用像一个结构foreach的名字在行或列的访问,这不是大问题,但你可能想在最左边一列,例如,这将是第1列。



Answer 16:

在指标之一CFML开始。



Answer 17:

多种语言,包括帕斯卡尔整个Wirthian线,在Object Pascal,Modula-2的,Modula-3语言,奥伯伦,奥伯伦2和Ada(加上其他一些我可能忽略的)允许阵列从你喜欢什么,包括点进行索引,很明显,1。

二郎索引的元组,并从1阵列。

我想,但我不再是积极的,是陵和PL / 1两个指数从1我也敢肯定,Cobol的指数从1。

从1索引前C基本上大多数高级编程语言(汇编语言是显而易见的原因,一个显着的例外 - 从0原因Ç指标),从C-主导的霸权之外的许多语言仍然这样做的这一天。



Answer 18:

还有的Smalltalk



Answer 19:

Visual FoxPro中,FoxPro和快船都使用阵列,其中元件1是一个数组的第一个元素。我认为这是你的意思是由1索引。



Answer 20:

我看到,FORTRAN的知识,这里仍然在'66版本。

的Fortran具有可变的较低和数组的上限。

也就是说,如果你声明一个数组,如:

real, dimension (90) :: x

然后1将下限(默认)。

如果你声明它像

real, dimension(0,89) :: x

然后但是,它将有一个下界0。

如果在另一方面,你声明它像

real, allocatable :: x(:,:)

那么你可以把它分配给任何你喜欢的。 例如

allocate(x(0:np,0:np))

装置阵列将具有元件

x(0, 0), x(0, 1), x(0, 2 .... np)
x(1, 0), x(1, 1), ...
.
.
.
x(np, 0) ...

也有一些更有趣的组合可能:

real, dimension(:, :, 0:) :: d
real, dimension(9, 0:99, -99:99) :: iii

其留做家庭作业,有兴趣的读者:)

这些只是我想起了我的头顶部的人。 由于FORTRAN的主要优势之一是阵列处理能力,很显然,在有很多是其他与出局此处不再赘述。



Answer 21:

没有人提到的XPath。



Answer 22:

数学和千里马,除了其他语言已经提到。



Answer 23:

Informix中,除了其他语言已经提到。



Answer 24:

基本功能 - 不只是VB,但所有的旧时代,20世纪80年代编号行版本。

理查德



Answer 25:

FoxPro中使用的阵列开始于索引1。



Answer 26:

的dBASE使用阵列开始于索引1。

阵列(开始)以dBASE



Answer 27:

RPG,包括现代RPGLE



Answer 28:

虽然C是由索引设计0,所以能够在C的阵列安排就好像它是1(或任何其他值)索引进行访问。 不是你所期望的一个普通的C编码器要经常做的,但它有时帮助。

例:

#include <stdio.h>
int main(){
    int zero_based[10];
    int* one_based;
    int i;
    one_based=zero_based-1;

    for (i=1;i<=10;i++) one_based[i]=i;
    for(i=10;i>=1;i--) printf("one_based[%d] = %d\n", i, one_based[i]);
    return 0;
}


文章来源: Are there other common “c-like” or non “c-like” languages with non zero index array position? [closed]