Indexing 为什么有以1为基础的行号而以0为基础的字符号的约定?

Indexing 为什么有以1为基础的行号而以0为基础的字符号的约定?,indexing,conventions,Indexing,Conventions,根据: 这里的1.0表示插入文本的位置,可以读取为第1行,字符0。这是指第一行的第一个字符;对于程序员通常如何引用行和字符的历史约定,行号基于1,字符号基于0 我以前没听说过这个大会,在谷歌上也找不到任何相关的东西。有人能给我解释一下吗?这真的只是惯例,但这里有一个建议 字符位置通常被认为与Java迭代器相同,Java迭代器是指向两个字符之间位置的指针。因此,第一个字符是索引位置0后的字符。例如,子字符串位于两个字符间位置之间 另一方面,行位置通常以.NET枚举器的方式来考虑,它是指向项本身的指

根据:

这里的1.0表示插入文本的位置,可以读取为第1行,字符0。这是指第一行的第一个字符;对于程序员通常如何引用行和字符的历史约定,行号基于1,字符号基于0


我以前没听说过这个大会,在谷歌上也找不到任何相关的东西。有人能给我解释一下吗?

这真的只是惯例,但这里有一个建议

字符位置通常被认为与Java迭代器相同,Java迭代器是指向两个字符之间位置的指针。因此,第一个字符是索引位置0后的字符。例如,子字符串位于两个字符间位置之间


另一方面,行位置通常以.NET枚举器的方式来考虑,它是指向项本身的指针,而不是指向中间的位置。因此,第一行是位置1处的行。

这实际上只是惯例,但这里有一个建议

字符位置通常被认为与Java迭代器相同,Java迭代器是指向两个字符之间位置的指针。因此,第一个字符是索引位置0后的字符。例如,子字符串位于两个字符间位置之间


另一方面,行位置通常以.NET枚举器的方式来考虑,它是指向项本身的指针,而不是指向中间的位置。因此,第一行是位置1处的行。

我认为您指的是Tk的文本小部件。手册页上说:

行从1开始编号,以与使用此编号方案的其他UNIX程序保持一致

尽管如此,我不确定它在谈论哪些Unix工具

更新:
如注释中所述,许多unix文本处理工具似乎从1开始行号。tcl/tk源于unix,因此尽可能与底层操作系统环境兼容是有意义的。

我想您指的是tk的文本小部件。手册页上说:

行从1开始编号,以与使用此编号方案的其他UNIX程序保持一致

尽管如此,我不确定它在谈论哪些Unix工具

更新:
如注释中所述,许多unix文本处理工具似乎从1开始行号。tcl/tk源于unix,尽可能与底层操作系统环境兼容是有意义的。

例如,awk、ed、nl、sed,所有数字行都是这样。现在我记得,grep-n也从1开始编号。例如,awk、ed、nl、sed,所有数字行都是这样。现在我记得,grep-n还为TkDocs站点从1.+1开始的行编号。看起来真的很不错,虽然它目前看起来像是在建设中。也可通过google first查看:TkDocs站点为+1。看起来真的很不错,虽然它目前看起来像是在建设中。另外,请先与谷歌联系:-