第23節:變量都轉換成unsigned long數據類(lèi)型
不管是以前講的加法,現在講的減法,還是未來(lái)講的乘法和除法,我都會(huì )強烈建議“請把所有參與運算的變量都轉成unsigned long類(lèi)型”。unsigned long變量是三種數據類(lèi)型中取值范圍最大的數,取值范圍可達0到4294967295之間,用了此類(lèi)型變量的運算,不會(huì )輕易導致運算溢出的問(wèn)題。有細心讀者會(huì )問(wèn),萬(wàn)一數據超過(guò)了4294967295怎么辦?答:可用BCD碼的數組方式進(jìn)行運算。這種數組運算的方法我在《從業(yè)將近十年,手把手教你單片機程序框架》里用了好幾個(gè)章節跟大家介紹過(guò),初學(xué)者暫時(shí)不用深入學(xué)習它。
本文引用地址:http://dyxdggzs.com/article/201611/319832.htm變量轉換的方法是引入中間變量,有多少個(gè)需要轉換的變量就引入多少個(gè)中間變量,請看下面這個(gè)例子。
轉換之前:
unsigned int a;
unsigned char x=195;
unsigned long y=101;
a=x-y;
分析:上述公式用到3個(gè)變量,其中a和x都不是unsigned long變量,因此需要為它們分別引入中間變量t和s。
轉換之后:
unsigned int a;
unsigned char x=195;
unsigned long y=101;
unsigned long t; //引入的中間變量,用來(lái)替代a
unsigned long s; //引入的中間變量,用來(lái)替代x。
s=0; //s在接收x原數據之前先把高位和低位全部清零。因為s和x的數據寬度不一。
s=x; //接收x原數據,相當于把x轉換成unsigned long中間變量。
t=s-y; //此處的t就默認代表了變量a。
本章雖短,但是此方法在實(shí)際項目中很重要,大家不可大意。
下節預告:乘法運算的5種常見(jiàn)格式。
評論