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