在基于0的索引系统中,人们是否将索引0处的元素称为“第一个”或“第0个”元素?

时间:2010-04-08 14:17:47

标签: language-agnostic terminology conventions

例如,在Java / C ++中,您是否随便说'a'"abc"第一个字符,或第零

人们都说两者都是模棱两可的,还是有实际的约定?


维基百科对Zeroth文章的引用:

  

在计算机科学中,数组引用通常也从0开始,因此计算机程序员可能会在其他人可能首先使用的情况下使用第0个,等等。

这似乎支持这样一种假设,即它总是模棱两可的。


感谢Alexandros Gezerlis(see his answer below)发现这句话,来自如何像计算机科学家一样思考:用Python学习,作者:Allen B. Downey,Jeffrey Elkner和Chris Meyers, chapter 7

  

"banana"的第一个字母不是a。除非你是计算机科学家。出于不正当的原因,计算机科学家总是从零开始计算。 "banana"的第0个字母(零-eth)为b。第1个字母(1-eth)为a,第2个(2-eth)字母为n

这似乎表明我们作为计算机科学家在处理基于0的索引系统时应该拒绝“第一”,“第二”等自然语义。

这句话暗示也许 ARE 某些语言的官方裁决,所以我提出了这个问题[language-agnostic]

8 个答案:

答案 0 :(得分:25)

它是数组中的第一个字符或元素,但它位于索引零处。

答案 1 :(得分:9)

术语“第一”与数组的绝对索引无关,而只是它作为最低索引元素的相对位置。例如,Turbo Pascal允许数组中的任意索引(例如5到15)。位于数组[5]的元素仍将被称为第一个元素。

答案 2 :(得分:6)

引用this wikipedia article

  

虽然“第0”这个词本身并不存在   暧昧,它会造成歧义   所有后续元素   缺乏背景时的顺序,因为   他们被称为“第一”,“第二”,   等与正常相冲突   这些话的日常意义。

所以我会说“先”。

答案 3 :(得分:4)

可能是主观的,但我把它称为第一个元素或元素零。这是第一个,除了艾萨克·阿西莫夫的机器人法则之外,我甚至不相信第0个是真正的词: - )

根据定义,第一个之前的任何东西都成为第一个,并将其他所有东西推出。

答案 4 :(得分:2)

绝对是第一个,直到今天才听到第0个消息!

答案 5 :(得分:2)

我同意这里的大多数答案,其中第一个字符是零索引,但仅供记录,以下内容来自Allen Downey的书“Python for Software Design”:

  

所以b是第0个字母(“零-eth”)   'banana',a是第1个字母   (“one-eth”),n是第2   (“双-eth”)信。

因此,他通过使用:

消除了歧义

a)一个数字,然后是“th”,或 b)一个词,然后是“-eth”。

答案 6 :(得分:2)

C和C ++标准说“初始元素”和“第一元素”,意思相同。如果我记得毫不含糊,我会说“初始”,“第0”或“从零开始计数”。但通常我说“先”。香蕉的东西要么是幽默的夸张,要么是一点点疯狂(我怀疑前者 - 这只是解释0索引的一种方式)。我不认为我知道任何人实际上会说“第一”意味着“0索引数组的索引1”,除非他们在同一段中首先说“第0”,以便明确它们的意思。 / p>

答案 7 :(得分:1)

这取决于你是否是艾萨克·阿西莫夫的robot系列的粉丝。