如何使用dc获得数字之间的差异?

如何使用dc获得数字之间的差异?

输入:

> printf 1\n\2\n3\n
1
2
3

期望的输出:

0
1
1

键入printf 1\n\2\n3\n | dc -e '-p'输出为:

dc: stack empty
dc: stack empty

答案1

您可以将整组命令直接通过管道传输到dc.

printf "1 2 3 - - p" | dc

如果您想减去任意堆栈,可以使用宏。

printf "%s [-z1<r]srz1<rp" "<insert numbers here>" | dc

例如

printf "%s [-z1<r]srz1<rp" "100 5 2 1" | dc
96

该宏执行以下操作:

  • [启动宏
  • -减去前两个数字并推回堆栈
  • z1<r将堆栈大小压入 stack 和 1,然后比较 LESSTHAN,如果 true 则运行r
  • ]sr宏结束,存入寄存器r
  • z1<r通过测试检查堆栈是否包含元素1 < Stack Size
  • p打印结果。

  • `

相关内容