程序員在從事北京網站建設工作時可以會遇到與網站編程語言、企業軟件開發、品牌網站建設、微wei商shang城cheng係xi統tong開kai發fa等deng相xiang關guan的de問wen題ti,如ru果guo你ni無wu法fa解jie決jue,那na麼me一yi定ding要yao及ji時shi的de聯lian係xi分fen形xing科ke技ji,這zhe裏li的de專zhuan家jia會hui詳xiang細xi的de為wei你ni解jie答da。接jie下xia來lai分fen形xing科ke技ji最zui後hou為wei大da家jia介jie紹shao三san點dian內nei容rong,即jiC程序中的循環建設問題、減少判斷語句問題和查表問題。

9、循環建設問題
對於C程序中的循環建設問題進行如下的介紹
(1)循環語
對於一些不需要循環變量參加運算的任務,可以把它們放到循環外麵,這裏的任務包括表達式、函數的調用、指針運算、數組訪問等,應該將沒有必要執行多次的操作全部集合在一起,放到一個init的初始化程序中進行。
(2)延時函數
C程序中常使用的延時函數均采用自加的形式:
void delay (void)
{
unsigned int i;
for (i=0;i<1000;i++)
;
}
將其改為自減延時函數:
void delay (void)
{
unsigned int i;
for (i=1000;i>0;i--)
;
}
兩個函數的延時效果是相似的,但幾乎所有的C編譯對後一種函數生成的代碼均比前一種代碼少1~3個字節,因為幾乎所有的MCU均有為0轉移的指令,采用後一種方式能夠生成這類指令。
在使用while循環時也一樣,使用自減指令控製循環會比使用自加指令控製循環生成的代碼更少1~3個字母。但是在循環中有通過循環變量“i”讀寫數組的指令時,使用預減循環時有可能使數組超界,要引起注意。
(3)while循環和do…while循環
用while循環時有以下兩種循環形式:
unsigned int i;
i=0;
while (i<1000)
{
i++;
//用戶程序
}
或:
unsigned int i;
i=1000;
do
i--;
//用戶程序
while (i>0);
在這兩種循環中,使用do…while循環編譯後生成的代碼的長度短於while循環。
10、減少判斷語句的問題
分形科技建議程序員在C程序建設中能夠使用條件編譯(ifdef)的地方就使用條件編譯而不使用if語句,有利於減少編譯生成的代碼的長度,能夠不用判斷語句則少用判斷用語句。
11、查表問題
在C程cheng序xu建jian設she中zhong一yi般ban不bu進jin行xing非fei常chang複fu雜za的de運yun算suan,如ru浮fu點dian數shu的de乘cheng除chu及ji開kai方fang等deng,以yi及ji一yi些xie複fu雜za的de數shu學xue模mo型xing的de插cha補bu運yun算suan,對dui這zhe些xie即ji消xiao耗hao時shi間jian又you消xiao費fei資zi源yuan的de運yun算suan,應ying盡jin量liang使shi用yong查zha表biao的de方fang式shi,並bing且qie將jiang數shu據ju表biao置zhi於yu程cheng序xu存cun儲chu區qu。如ru果guo直zhi接jie生sheng成cheng所suo需xu的de表biao比bi較jiao困kun難nan,也ye盡jin量liang在zai啟qi了le,減jian少shao了le程cheng序xu執zhi行xing過guo程cheng中zhong重zhong複fu計ji算suan的de工gong作zuo量liang。
上文接北京網站建設之C程序建設相關知識【續】、北京網站建設之C程序建設相關知識【再續】、北京網站建設之C程序建設相關知識總結












