歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux下的dc計算器

dc采用逆波蘭式計算表達式,計算過程是對棧的手動維護。逆波蘭式看起來很別扭,但跑起來當然是很有效率的。
 
亂七八糟的東西就不說了,直接切入script正題

負號在dc裡用_表示而非-,因為-是二元運算符“減號”

打印類命令:
 
p            :打印棧頂元素並換行
 
n            : 打印棧頂元素並將其彈出棧,完畢後不換行
 
P            : putchar ( int(棧頂元素) % 256) 並彈棧頂,不換行
 
f            : 從棧頂至棧底打印棧中所有值,每個一行 

 

算數運算符:
 
+            : 依次彈出w1與w2,將w2+w1壓棧。精度為結果值精度
 
-            : 依次彈出w1與w2,將w2-w1壓棧
 
*            : 依次彈出w1與w2,將w2*w1壓棧。精度為結果值精度與precision中較大值
 
/            : 依次彈出w1與w2,將w2/w1壓棧。精度為precision
 
%            : 依次彈出w1與w2,將w2-w2/w1*w1壓棧
 
~            : 依次彈出w1與w2,依次將w2/w1與w2%w1壓棧
 
^            : 依次彈出w1與w2,將w2^((int)w1)壓棧。精度為w2精度與precision中較大值
 
|            : 依次彈出w1 w2與w3,將 w3 ^ ((int)w2) (mod w1) 壓棧。w1 w3 需為整數
 
v            : 彈出w1,將sqrt(v)壓棧。精度為precision 

 

棧操作:
 
c            : 清空棧
 
d            : 將棧頂元素復制並壓棧
 
r            : 交換棧頂兩元素 XXX

 

寄存器操作:
 
dc提供至少256個寄存器,分別用256個字符表示。一般用'a'..'z',不夠可以用123ABC!@#,再不夠就用\x00..\xff
 
除了主棧外,每個寄存器都是獨立的棧,寄存器棧頂的值被稱為這個寄存器的值
 
sr          : 彈出主棧頂元素w1,若r棧為空,則將w1壓入r棧,否則將r棧頂元素改為w1
 
lr          : 將r寄存器的值壓入主棧
 
Sr          : 彈出主棧頂元素w1,壓入r棧
 
Lr          : 彈出r棧頂元素w1並將其壓入主棧

Copyright © Linux教程網 All Rights Reserved