输入:
> 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
宏结束,存入寄存器rz1<r
通过测试检查堆栈是否包含元素1 < Stack Size
p
打印结果。`