邱吉
摘要:C語(yǔ)言是一種新型的語(yǔ)言,可能對(duì)于我們來(lái)說(shuō)是一種符號(hào)的堆積,但是對(duì)于電腦來(lái)說(shuō),就一種命令性的交流,這也是實(shí)現(xiàn)人與機(jī)器的一種交流與溝通的結(jié)果,C語(yǔ)言的靈活運(yùn)用就可以解決許多的復(fù)雜問(wèn)題,使得更多的復(fù)雜的算術(shù)以及數(shù)學(xué)問(wèn)題得以快速的解決,大大地提高運(yùn)算的效率以及運(yùn)算的范圍,可以解決生活上許多事情,具有非常好的使用價(jià)值,但是語(yǔ)言的嚴(yán)謹(jǐn)性以及復(fù)雜性往往會(huì)使得使用者出現(xiàn)問(wèn)題,且語(yǔ)言問(wèn)題出現(xiàn)后的解決也是復(fù)雜的,調(diào)試的時(shí)間往往會(huì)比編程的時(shí)間更久,因此下文便主要從這個(gè)方面來(lái)進(jìn)行探討,使得C語(yǔ)言可以變得更為便利。
關(guān)鍵詞:C語(yǔ)言;編程技術(shù);分析研究
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)22-0074-02
C語(yǔ)言是一種作為信息科學(xué)產(chǎn)物下的新型的學(xué)科與發(fā)展方向,因?yàn)樽詮碾娔X被發(fā)明出現(xiàn)的時(shí)候,科學(xué)家就一直在嘗試電腦幫助人們來(lái)解決一些復(fù)雜啊的程序化問(wèn)題,例如記憶、選擇等等很多方面,而C語(yǔ)言就是一種電腦與人類的一種溝通,C語(yǔ)言是現(xiàn)代科技產(chǎn)物下的一種高級(jí)程序設(shè)計(jì)語(yǔ)言,其有著很強(qiáng)的邏輯性與模塊程序化,層次分明利于調(diào)試,且簡(jiǎn)潔、條例清晰且可應(yīng)用功能強(qiáng)大,因此逐漸得到了廣泛的應(yīng)用,但是對(duì)于C語(yǔ)言的初學(xué)者學(xué)習(xí)來(lái)說(shuō)因其特性與其語(yǔ)法限制,會(huì)出現(xiàn)很多的問(wèn)題,沒(méi)有經(jīng)驗(yàn)以及良好的習(xí)慣,就無(wú)法得到正確的結(jié)果以及想要的目的,下文就針對(duì)C語(yǔ)言的變成技術(shù)進(jìn)行探討與分析,希望可以對(duì)學(xué)習(xí)者有一定的幫助。
1 C語(yǔ)言各類運(yùn)算與技術(shù)分析概述
C語(yǔ)言創(chuàng)始于1967年,其語(yǔ)言非常的復(fù)雜,且其不同于人的大腦的思考,需要很多的定義與規(guī)則才可以實(shí)現(xiàn)真正的運(yùn)算,得到人們想要的結(jié)果,在運(yùn)算符號(hào)上除了一般的加減乘除以外還有判斷符號(hào)等等,有各種各樣的數(shù)值類型,并且有指針、地址、字節(jié)大小等等各類的名稱。在數(shù)據(jù)類型上分為:整形、字符型、浮點(diǎn)型、指針型等等10余種,還有常量與變量的區(qū)分,還引入新的字符串概念,以及一系列的新的關(guān)鍵字,來(lái)代表不同的語(yǔ)句,例如:if、do、while等條件語(yǔ)句;char、case、register等數(shù)值類型;short、float等字符串長(zhǎng)度等等。C語(yǔ)言對(duì)于軟件發(fā)展有很大的貢獻(xiàn),為人們的生活帶來(lái)更多的便利。
2 混合運(yùn)算
C語(yǔ)言中一定會(huì)有很多的數(shù)學(xué)運(yùn)算,而這些包括數(shù)值型的數(shù)據(jù)的輸入與處理,例如整數(shù)、浮點(diǎn)數(shù)等等。在軍訓(xùn)混合運(yùn)算時(shí)可能會(huì)出現(xiàn)一些問(wèn)題,例如輸入數(shù)據(jù)溢出可計(jì)算范圍,或者輸入數(shù)據(jù)不符合程序原定規(guī)定時(shí),程序會(huì)出現(xiàn)錯(cuò)誤,且程序在運(yùn)算時(shí)也會(huì)自動(dòng)的對(duì)數(shù)值進(jìn)行數(shù)值類型的轉(zhuǎn)換,因此編程時(shí)會(huì)出現(xiàn)錯(cuò)誤,為了將這種情況避免并保證程序的運(yùn)轉(zhuǎn)的正常,在編程時(shí)需要對(duì)數(shù)值進(jìn)行定義,并對(duì)數(shù)據(jù)的轉(zhuǎn)換有一定的提前說(shuō)明與重新定義,因?yàn)殡娔X畢竟不是人類的大腦可以自動(dòng)進(jìn)行兌換,因此這就需要在運(yùn)算時(shí)將不同類型的數(shù)據(jù)轉(zhuǎn)換為同一類型,然后才能夠進(jìn)行正常的運(yùn)算過(guò)程。
在C語(yǔ)言中會(huì)有兩種情況需要對(duì)轉(zhuǎn)換進(jìn)行定義:其一是在使用者未進(jìn)行定義時(shí)系統(tǒng)進(jìn)行自動(dòng)的轉(zhuǎn)換,例如在對(duì)6+2.2進(jìn)行運(yùn)算時(shí),6為整數(shù),而2.2為浮點(diǎn)數(shù),這在電腦看來(lái)是兩種完全不一樣的數(shù)據(jù),無(wú)法進(jìn)行統(tǒng)一的運(yùn)算,因此電腦會(huì)自動(dòng)地將6變成6.0這樣的同數(shù)值的數(shù)據(jù)與2.2進(jìn)行運(yùn)算。而另一種情況為用戶強(qiáng)制的進(jìn)行定義,在編程程序中由創(chuàng)作者對(duì)其進(jìn)行定義,例如在對(duì)3+2.14進(jìn)行運(yùn)算時(shí),用戶將2.14定義為只運(yùn)算整數(shù)部分,于是就會(huì)編程為3+(int)2.14,這樣2.14在電腦看來(lái)就是整數(shù)2,因此運(yùn)算的結(jié)果為5。
在電腦的運(yùn)算過(guò)程思維中是這樣定義的,如果兩個(gè)運(yùn)算的符號(hào)兩端的數(shù)值是不同類型的,那么就會(huì)先將等號(hào)右側(cè)的部分進(jìn)行先運(yùn)算,之后結(jié)果是按照等號(hào)左側(cè)的數(shù)值類型進(jìn)行轉(zhuǎn)換。例如:在signed int m=453333;short n;n=m;此語(yǔ)句中,就是將m的數(shù)值先傳輸給n,但是n在定義時(shí)卻是short類型,且最高位是符號(hào)位,因此n此處變?yōu)樨?fù)數(shù),因此最終n的值為-1。
在C語(yǔ)言中會(huì)有很多的規(guī)定,因?yàn)殡娔X畢竟不似人腦的靈活,因此需要很多的規(guī)則來(lái)使得很多中可能不會(huì)出現(xiàn)困難與障礙,也使得C語(yǔ)言有更多的運(yùn)算容納量,在數(shù)據(jù)類型上會(huì)有很多的先后順序,在運(yùn)算上也有先后順序,有從左至右的,也有從右至左的,學(xué)習(xí)者應(yīng)注意其異同點(diǎn),不要混淆,多加練習(xí)才能夠熟練掌握。
3 指針運(yùn)算
指針是C語(yǔ)言中一個(gè)較為重要的數(shù)據(jù)類型,也是在復(fù)雜的運(yùn)算中常常會(huì)使用的一種方便的運(yùn)算類型,且其可以有效地節(jié)省編程的空間,但是指針又往往是使用者會(huì)使用錯(cuò)誤的一種運(yùn)算方式,且錯(cuò)誤的隱蔽性比較強(qiáng),一般不易檢查出來(lái),需要使用者好好地學(xué)習(xí)與練習(xí)才可以掌握的一種較為復(fù)雜的運(yùn)算。
指針運(yùn)算一般分為動(dòng)態(tài)分配與靜態(tài)分配兩種模式。靜態(tài)分配主要是指C語(yǔ)言編程時(shí)已經(jīng)確定了存儲(chǔ)的空間,例如在對(duì)全局變量進(jìn)行運(yùn)算時(shí),語(yǔ)句為static char b[size],那么在對(duì)于b的數(shù)據(jù)進(jìn)行運(yùn)算時(shí)就已經(jīng)控制了為size 大小的空間來(lái)儲(chǔ)存數(shù)據(jù),對(duì)于局部變量也是一樣的情況,例如語(yǔ)句 char c[size],那么在進(jìn)行對(duì)于c局部的變化時(shí),其空間也只有size 字節(jié)的大小,但是在使用完后,程序會(huì)自動(dòng)的釋放局部變量的空間。而動(dòng)態(tài)分配則是在儲(chǔ)存的空間大小是不確定的,會(huì)根據(jù)數(shù)值的輸入與需要來(lái)進(jìn)行大小的調(diào)配,例如語(yǔ)句malloc(size),是指會(huì)在庫(kù)函數(shù)中分配size個(gè)字節(jié)的連續(xù)的空間,在調(diào)用此空間結(jié)束后會(huì)返回一個(gè)只想分配好的儲(chǔ)存的空間的指針,但是需要注意的是在使用完該存儲(chǔ)空間后需要使用free()來(lái)釋放此空間,因?yàn)閯?dòng)態(tài)分配不會(huì)自動(dòng)的在使用完后將空間釋放。
4 程序優(yōu)化
對(duì)于一個(gè)程序員來(lái)說(shuō),C語(yǔ)言的運(yùn)用是非常靈活的,而初學(xué)者可能只是對(duì)其能夠運(yùn)行且正確就是目標(biāo),但作為一個(gè)程序員來(lái)說(shuō),如何運(yùn)用最簡(jiǎn)便的方式,以及最少的空間來(lái)完成該結(jié)果才是最終目標(biāo),而C語(yǔ)言中一些程序的使用可以達(dá)到優(yōu)化程序的目的,下面簡(jiǎn)要介紹幾種:
4.1 Register語(yǔ)句使用
Register語(yǔ)句可以使得變量在操作時(shí)不占用存儲(chǔ)的空間,因其運(yùn)算是在CPU的寄存器中操作的,且CPU的運(yùn)算會(huì)比存儲(chǔ)內(nèi)存的運(yùn)算速度快很多,一般會(huì)對(duì)一些會(huì)重復(fù)使用很多遍的變量定義為register變量類型,這樣在多次循環(huán)中可以使得整個(gè)運(yùn)算變快,但是其數(shù)量也要控制,因?yàn)镃PU中寄存器的數(shù)量是有限的,因此把握這個(gè)度是程序員需要掌握的經(jīng)驗(yàn)。
4.2循環(huán)體內(nèi)優(yōu)化
循環(huán)體是一般復(fù)雜程序中不可缺少的一部分,因?yàn)闀?huì)重復(fù)進(jìn)行使用,因此優(yōu)化循環(huán)體內(nèi)部,會(huì)使得內(nèi)存與運(yùn)算速度都會(huì)有很大的提升,系統(tǒng)在執(zhí)行一個(gè)函數(shù)的運(yùn)算時(shí),都需要保存以及恢復(fù)當(dāng)前的情況,進(jìn)行一個(gè)進(jìn)棧與出棧的過(guò)程,如果循環(huán)體中有很多次的調(diào)用函數(shù),系統(tǒng)就會(huì)有很大的負(fù)擔(dān),一旦函數(shù)較為復(fù)雜,那么就會(huì)導(dǎo)致系統(tǒng)的癱瘓,因此優(yōu)化是一個(gè)優(yōu)秀的程序員需要具備的品質(zhì),例如可以適當(dāng)?shù)牟捎煤甓x(# define),其本身不是函數(shù),但卻可以用作函數(shù);也可以在多重循環(huán)中將最長(zhǎng)的循環(huán)放在內(nèi)層,有效地減少CPU跨循環(huán)的使用次數(shù),可以加快運(yùn)算效率。
5 結(jié)束語(yǔ)
通過(guò)本文的敘述可以看出,C語(yǔ)言可以有效地在許多計(jì)算領(lǐng)域提供幫助,復(fù)雜的運(yùn)算或是循環(huán)的篩選都可以很快地實(shí)現(xiàn),使得很多的問(wèn)題都可以有效的借助計(jì)算機(jī)來(lái)實(shí)現(xiàn),大大地增加了效率以及準(zhǔn)確度,為人們的生活帶來(lái)很多的便利,但是C語(yǔ)言編程本身還需要程序員的更多的掌握以及熟練的運(yùn)用才可以更好的使得C語(yǔ)言為工程以及各種方面的應(yīng)用帶來(lái)便利,這個(gè)技術(shù)需要程序員多積累、多實(shí)踐才能夠真正的掌握,愿在不久的將來(lái),會(huì)有更多的優(yōu)秀程序員為社會(huì)的發(fā)展作出更多的貢獻(xiàn)。
參考文獻(xiàn):
[1] 段煅. C語(yǔ)言編程技巧在C語(yǔ)言學(xué)習(xí)中的應(yīng)用[J].電腦編程技巧與維護(hù),2010(20).
[2] 余勍,王捷. 淺談C語(yǔ)言編程技巧在C語(yǔ)言學(xué)習(xí)中的應(yīng)用[J].信息通信,2013(7).
[3] 包敬海,韋美蘭. 匯編和C混合編程的研究[J].電腦與電信,2011(1).