Arrays dc unix:即使在同一数组索引中存储新值后仍保留初始值
我无法理解dc手册页中给出的示例: 对我来说,答案应该是2,因为: 10:a 这里我们将1存储在数组a的第0个位置 0Sa 现在我们将0推送到寄存器a的堆栈中 20:a 现在,我们再次将2存储在数组a的第0个位置,从而覆盖之前存储在该位置的1 洛杉矶 现在我们弹出存储在寄存器a堆栈上的0,并将其推送到主堆栈 0;A. 现在我们再次将0推送到主堆栈,然后将其弹出用作数组索引,并将存储在数组a第0个位置的2推送到主堆栈 p 现在我们打印主堆栈的顶部,即2。所以答案应该是2 我错过了什么 编辑:Arrays dc unix:即使在同一数组索引中存储新值后仍保留初始值,arrays,unix,stack,dc,Arrays,Unix,Stack,Dc,我无法理解dc手册页中给出的示例: 对我来说,答案应该是2,因为: 10:a 这里我们将1存储在数组a的第0个位置 0Sa 现在我们将0推送到寄存器a的堆栈中 20:a 现在,我们再次将2存储在数组a的第0个位置,从而覆盖之前存储在该位置的1 洛杉矶 现在我们弹出存储在寄存器a堆栈上的0,并将其推送到主堆栈 0;A. 现在我们再次将0推送到主堆栈,然后将其弹出用作数组索引,并将存储在数组a第0个位置的2推送到主堆栈 p 现在我们打印主堆栈的顶部,即2。所以答案应该是2 我错过了什么 编辑: $
$ dc -V
dc (GNU bc 1.06.95) 1.3.95
手册页中示例前面给出的说明: 请注意,寄存器的每个堆叠实例都有自己的关联数组 换句话说,在同一寄存器上使用数组命令和堆栈命令时,将创建二维结构。数组命令对顶行中的条目进行操作,堆栈命令对整行进行操作 此外,使用l和l命令检索的堆栈项的标量值与数组完全分离,而不仅仅是第0个元素的别名。我没有从手册页上看到,但在我的实验中似乎是这样 下面是示例中的命令,其结果值扩展为详细格式。最外层的结构是堆栈,最上面的结构列在第一位 所有寄存器的初始值:
[
{ scalar: undefined, array: [] }
]
10:a
0南非
20:a
洛杉矶
顶部入口已弹出。其标量值0已被推送到主堆栈,其数组值[2]已被丢弃
0;a
第二;命令不修改寄存器,只将第0个数组项复制到主堆栈上。由于数组为[1],因此将在主堆栈顶部放置一个1。手册页中示例前面给出的解释: 请注意,寄存器的每个堆叠实例都有自己的关联数组 换句话说,在同一寄存器上使用数组命令和堆栈命令时,将创建二维结构。数组命令对顶行中的条目进行操作,堆栈命令对整行进行操作 此外,使用l和l命令检索的堆栈项的标量值与数组完全分离,而不仅仅是第0个元素的别名。我没有从手册页上看到,但在我的实验中似乎是这样 下面是示例中的命令,其结果值扩展为详细格式。最外层的结构是堆栈,最上面的结构列在第一位 所有寄存器的初始值:
[
{ scalar: undefined, array: [] }
]
10:a
0南非
20:a
洛杉矶
顶部入口已弹出。其标量值0已被推送到主堆栈,其数组值[2]已被丢弃
0;a
第二;命令不修改寄存器,只将第0个数组项复制到主堆栈上。由于数组为[1],因此将在主堆栈顶部放置一个1
[
{ scalar: undefined, array: [1] }
]
[
{ scalar: 0, array: [] },
{ scalar: undefined, array: [1] }
]
[
{ scalar: 0, array: [2] },
{ scalar: undefined, array: [1] }
]
[
{ scalar: undefined, array: [1] }
]
[
{ scalar: undefined, array: [1] }
]