C語言中,乘法符號不是「×」而是「*」,除法求商的符號不是「÷」而是「/」。乘除法符號跟我們日常用的數學符號有點不一樣,我個人猜測C語言這樣規定的原因是因為「×」容易跟大寫字母「X」搞混,而「÷」這個符號在電腦鍵盤上不方便直接輸入,故分別用「*」和「/」替代。
本文引用地址:http://www.eepw.com.cn/article/201611/319836.htm何謂「整除」?請看以下兩個對比例子:
10除以4,商等於2.5。-(帶小數點)
10除以4,商等於2,餘數是2。-(這就叫做整除)
什麼時候帶小數點,什麼時候是整除?取決於參與運算的變量類型。標準的C語言中,其實遠遠不止我前面所說的unsigned char ,unsigned int ,unsigned long這三種類型,還有一種叫浮點數的float類型,當參與運算的變量涉及float類型時,就可能存在小數點。這是題外話,大家大概知道有這麼一回事即可,暫時不用深入研究float等其它類型的數據,因為在單片機項目中,只要用我所述的三種常用類型就絕對夠用了,單片機不用涉及float類型,如果項目涉及小數點的顯示和處理,我們完全可以用那三種類型去處理它,這些處理方法我後續會講到,暫時不用管。而unsigned char ,unsigned int ,unsigned long這三種類型的除法都是整除,我後續所講的所有章節內容也都是整除。
整除的通用格式:
「保存變量」=「被除數」 / 「除數1」 / 「除數2」... / 「除數N」;
跟之前講的加減運算一樣,左邊的「保存變量」必須是變量,右邊的可以是變量和常量的任意組合。如果右邊只有兩個參與運算的數據,就是整除的常見格式。
整除的常見格式:
「保存變量」=「被除數」 / 「除數」 ;
現在從整除常見格式的6個方面來分析它的規律。
(1)當「除數」等於0時。我們都知道,數**算除數是不允許等於0的,如果在單片機中非要讓除數為0,商會出現什麼結果?我試過,發現有一個規律:如果「除數」是變量的0,那麼商等於十進位的255(十六進位是0xff)。如果「除數」是常量的0,那麼商等於十進位的1。比如:
a=23 /y; //假設除數變量y裡面是0,那麼a的結果是255(十六進位的0xff)。
b=23 /0; //除數是常量0,那麼b的結果是1。
(2)當被除數小於「除數」時。商等於0。比如:
c=7 / 10; //c的結果是0。
(3)當被除數等於「除數」時。商等於1。比如:
d=10/ 10; //d的結果是1。
(4)當被除數大於「除數」時。商大於0。
比如:
e=10/ 4; //e的結果是2。
f=10/ 3; //f的結果是3。
(5)自除運算的簡寫。跟前面加減法一樣,當「被除數」是「保存變量」時,存在自除運算的簡寫。
「保存變量」=「保存變量」 / 「除數」 ;
上述自除運算的簡寫如下:
「保存變量」 / =「除數」 ;
比如:
g/=5; //相當於g=g/5;
加減法有自加1「++g」和自減1「g--」的特殊寫法,但是除法不存在這種自除1的特殊寫法,因為一個數除以1還是等於它本身,所以自除1沒有任何意義,因此C語言語法中沒有這種寫法。
(6)除法的溢出規律跟加法的溢出規律是一樣的,所以不再多舉例子。在實際項目中,為了避免一不小心就溢出的問題,我強烈建議,不管加減乘除,凡是參與運算的變量全部都要轉化成unsigned long變量,轉化的方法也跟加減運算的轉換方法一致,不再詳細講解這方面的內容。
現在編寫一個程序來練習剛才講到的內容,最後把程序編譯後下載到堅鴻51學習板觀察結果。請直接複製第十節模板程序,修改的main程序代碼如下:
void main() //主程序
{
/*---C語言學習區域的開始*/
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
unsigned char e;
unsigned char f;
unsigned char g=10; //初始化為10
unsigned char y=0; //除數變量初始化為0。
a=23/y;
b=23/0;
c=7/10;
d=10/10;
e=10/4;
f=10/3;
g/=5; //相當於g=g/5;
GuiWdData0=a; //把a這個變量放到窗口變量0裡面顯示
GuiWdData1=b; //把b這個變量放到窗口變量1裡面顯示
GuiWdData2=c; //把c這個變量放到窗口變量2裡面顯示
GuiWdData3=d; //把d這個變量放到窗口變量3裡面顯示
GuiWdData4=e; //把e這個變量放到窗口變量4裡面顯示
GuiWdData5=f; //把f這個變量放到窗口變量5裡面顯示
GuiWdData6=g; //把g這個變量放到窗口變量5裡面顯示
/*---C語言學習區域的結束*/
while(1)
{
initial();
key_service();
display_service();
}
}
查看運算結果的方法。如何在堅鴻51學習板上觀察變量?按下S1或者S5按鍵即可切換顯示不同的窗口,從而顯示不同的變量。按下S9按鍵不鬆手就可以切換到十六進位的顯示界面,鬆開手後會自動切換到十進位的界面。上堅鴻51學習板觀察程序執行的結果如下:
變量a為255(十六進位是0xff)。
變量b為1。
變量c為0。
變量d為1。
變量e為2。
變量f為3。
變量g為2。
下節預告:整除求餘的運算。