C語言編譯環(huán)境的教學(xué)分析
關(guān)鍵詞:C語言是計(jì)算機(jī)教學(xué)的一個(gè)重點(diǎn),C語言從某種意義上來說連接了高級(jí)語言和匯編語言的中間橋梁,因此C語言的功能非常豐富,不僅僅能夠體現(xiàn)在軟件的編程方面,還體現(xiàn)在單片機(jī)等基本匯編語言的編程上,能夠?qū)崿F(xiàn)很好的無縫集成,本文研究的重點(diǎn)是根據(jù)C語言編譯環(huán)境的不同來闡述不同的教學(xué)思路,進(jìn)而指出一條更加科學(xué)合理的教學(xué)方法。
關(guān)鍵詞:C語言;編譯環(huán)境;教學(xué)分析
一、引言
目前C語言的編譯環(huán)境主要有三種,兩種屬于可視化的C語言編程,分別是Borland公司開發(fā)的Turbo C 2.0和Turbo C++ 3.0,另外一家是微軟公司研發(fā)的Visual C++ 6.0。還有就是在本世紀(jì)初常常使用的C語言的編譯環(huán)境,基于DOS平臺(tái)下的16位C語言,這個(gè)DOS平臺(tái)的編譯環(huán)境是非常經(jīng)典的,是當(dāng)時(shí)第一融合了程序編輯、編譯以及調(diào)試和連接為一體的程序開發(fā)環(huán)境。只是后來圖形操作系統(tǒng)占據(jù)主流,再加上微軟開發(fā)了相應(yīng)的Visual C++ 6.0以及寶蘭公司開發(fā)的Turbo C++ 3.0,通過實(shí)現(xiàn)了圖形化的開發(fā)環(huán)境并融入了編譯、連接、調(diào)試等諸多功能,才正式成為當(dāng)前C語言教學(xué)編譯環(huán)境的主流。
特別是Visual C++ 6.0語言就更是如此,從2008年4月開始正式成為全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)和三級(jí)考試的C語言編譯環(huán)境。Visual C++ 6.0又叫做VC,是微軟可視化編程的重要組成部分,VC是基于32位操作系統(tǒng)的編譯環(huán)境,編譯環(huán)境實(shí)際上就是一種工具,能夠讓C語言在這個(gè)工具里更加容易的被使用,從某種意義上來說,C語言的教學(xué)時(shí)獨(dú)立于編譯環(huán)境的,但是目前對(duì)知識(shí)點(diǎn)的介紹,以及對(duì)C語言的靈活運(yùn)用又脫離不了C語言的編譯環(huán)境的使用,所以針對(duì)當(dāng)前有關(guān)C語言不通的編譯環(huán)境,有必要在C語言的教學(xué)時(shí),要進(jìn)一步引入對(duì)不通編譯環(huán)境的教學(xué),從而有助于提升學(xué)生對(duì)C語言能力的掌握。
二、編譯環(huán)境的不同相應(yīng)的數(shù)據(jù)存儲(chǔ)空間會(huì)產(chǎn)生變化
編譯環(huán)境從16位操作系統(tǒng)轉(zhuǎn)變成32位操作系統(tǒng),對(duì)于整型和指針類型的數(shù)據(jù)存貯空間將會(huì)發(fā)生一定的變化,雖然32位操作系統(tǒng)有效的擴(kuò)大了計(jì)算機(jī)整型數(shù),16位的操作系統(tǒng)的整型數(shù)只是2的16次方,無符號(hào)整型數(shù)的范圍就在0到65535之間,但是32位操作系統(tǒng)則將這個(gè)數(shù)據(jù)提升到0到4294967295,在16位操作系統(tǒng)下有符號(hào)的整型則為-32768到32767,而32位操作系統(tǒng)下有符號(hào)整型則為-2147483648 到2147483647,從這個(gè)數(shù)據(jù)的擴(kuò)大來看,通常而言在VC的編譯環(huán)境下就不需要考慮數(shù)據(jù)溢出的問題,但是在16位操作系統(tǒng)中的DOS環(huán)境編譯下,只有32767,因此常常會(huì)出現(xiàn)數(shù)據(jù)溢出的問題。比如在DOS環(huán)境下表達(dá)式20000+20000的值就變成了5536,而不是40000。從這點(diǎn)上來說,編譯環(huán)境的不同,在其教學(xué)過程中就需要結(jié)合不同的教學(xué)方式讓學(xué)生知道編譯的注意事項(xiàng),而且隨著軟件以及數(shù)據(jù)不斷的膨脹,操作系統(tǒng)也發(fā)展到64位,這時(shí)的C語言編譯環(huán)境依然會(huì)發(fā)生變化,此時(shí)無符號(hào)整型就從0變成了2的64次方-1,其整型規(guī)模已經(jīng)非常巨大,此時(shí)完全可以不用考慮數(shù)據(jù)存貯空間溢出的問題了。比如下面的程序代碼
#include <stdio.h>
void main()
{
int i= -1;
printf("%u\n",i);
}
在Turbo C 2.0(簡(jiǎn)稱TC)下,輸出的結(jié)果就是65535,但是才VC的運(yùn)行環(huán)境下,則是4294967295,這就是TC是16位的C語言編譯環(huán)境,但VC屬于32位C語言的編譯環(huán)境。因此輸入的數(shù)值是不一致的,當(dāng)人如果是64位的操作系統(tǒng),那么最終的輸出結(jié)果就是2的64次方減1這個(gè)數(shù)值。
對(duì)于指針型數(shù)據(jù)其實(shí)和基本整型數(shù)據(jù)存在著同樣的問題,在16位操作系統(tǒng)下,存貯空間是為2個(gè)字節(jié),到了32位操作系統(tǒng)下,就會(huì)變成4個(gè)字符。因此通過指針來賦值時(shí),就要充分考慮指針存貯空間的變化,否則就會(huì)容易導(dǎo)致指針溢出的問題,而且指針溢出在程序規(guī)模不斷增大下,很難通過調(diào)試發(fā)現(xiàn),因此在針對(duì)指針方面的知識(shí)進(jìn)行教學(xué)時(shí),就需要充分考慮編譯環(huán)境的不同而進(jìn)行針對(duì)性的教學(xué)。
三、類型轉(zhuǎn)換以及表達(dá)式求值順序的變化分析
(一)類型轉(zhuǎn)換的分析
C語言在編譯時(shí),自動(dòng)類型轉(zhuǎn)化時(shí),字符型會(huì)轉(zhuǎn)成整型值,float型數(shù)據(jù)首先會(huì)轉(zhuǎn)化成double型,這是為了提升數(shù)據(jù)計(jì)算的準(zhǔn)確性,這個(gè)規(guī)則在TC環(huán)境下適用,但是到了VC環(huán)境就會(huì)存在差別,在字符型的轉(zhuǎn)換上,TC和VC是保持一致的,但是在float數(shù)據(jù)運(yùn)算時(shí),兩個(gè)單精度的數(shù)據(jù)在TC環(huán)境下運(yùn)算的結(jié)果是double型數(shù)據(jù),但是在VC環(huán)境下依然得到的是float數(shù)據(jù)。不過一個(gè)是float數(shù)值和一個(gè)double數(shù)值進(jìn)行運(yùn)算時(shí),TC和VC的最終結(jié)果都是double數(shù)值。因?yàn)閂C在編譯時(shí),會(huì)根據(jù)數(shù)值類型的不同,會(huì)統(tǒng)一轉(zhuǎn)化成精度更高的數(shù)值類型,因此最終的結(jié)果會(huì)變成double類型。
(二)表達(dá)式求值順序變化分析
在ANSI C中并沒有對(duì)二元算數(shù)運(yùn)算符的兩個(gè)運(yùn)算分量的順序進(jìn)行規(guī)定,這導(dǎo)致了不同的C語言的編譯環(huán)境對(duì)表達(dá)式的求值順序的編譯呈現(xiàn)出不同的結(jié)果,TC對(duì)于表達(dá)式的求值順序才去的是先求左運(yùn)算分量的值,然后再求右運(yùn)算分量的值,但是VC的情況正好和TC相反,所以這往往會(huì)將表達(dá)式的結(jié)果呈現(xiàn)出不同的結(jié)果,這就要求C語言程序?qū)W習(xí)者需要結(jié)合不同的編譯環(huán)境,對(duì)表達(dá)式進(jìn)行正確的運(yùn)算書寫,這樣才能夠保證獲得正確的結(jié)果。不過表達(dá)式的邏輯運(yùn)算,TC和VC的運(yùn)算結(jié)果能夠保持一致,這也關(guān)鍵在于邏輯運(yùn)算是在ANSI C引入了順序點(diǎn)的標(biāo)準(zhǔn),這確保了不同編譯環(huán)境下能夠?qū)⒔Y(jié)果保持一致的根本原因。
四、總結(jié)
通過上面的分析,在C語言的編譯環(huán)境進(jìn)行教學(xué)時(shí),一定要遵循編譯環(huán)境對(duì)C語言的編譯過程進(jìn)行教學(xué),發(fā)現(xiàn)該編譯環(huán)境和其他C語言的編譯環(huán)境的不同,找到不同的核心點(diǎn),才能夠有助于學(xué)生更好的領(lǐng)悟編譯環(huán)境對(duì)于C語言程序設(shè)計(jì)的重要性,可能一個(gè)一不小心的數(shù)據(jù)類型的賦值存在問題,就可能會(huì)導(dǎo)致程序在調(diào)試過程出現(xiàn)bug,而且由于C語言程序設(shè)計(jì)遵循了瀑布流的原則,如果在大量的程序代碼前,想要找出這樣的疏忽一般是非常困難的。通過對(duì)編譯環(huán)境的了解,才能夠更好的編寫出符合規(guī)范的代碼,培養(yǎng)學(xué)生良好的變成習(xí)慣。
參考文獻(xiàn):
[1]梁海楠,童璐. 不同編譯環(huán)境下的C語言教學(xué)[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用,2011(19)
[2]宋元濤.Windows應(yīng)用程序的用戶界面設(shè)計(jì)研究[D].曲阜師范大學(xué),2000
楊超(1975.11),男, 漢族 貴州遵義人 遵義職業(yè)技術(shù)學(xué)院 本科,實(shí)驗(yàn)師,從事計(jì)算機(jī)教育教學(xué) 電話15285218999
欄目分類
- 光伏制氫摻入天然氣燃燒可行性研究
- 纖維素基摩擦納米發(fā)電機(jī)的制備及其在人機(jī)交互與能源收集中的應(yīng)用研究
- 工業(yè)機(jī)器人技術(shù)在自動(dòng)化控制領(lǐng)域中的應(yīng)用
- 創(chuàng)造低碳舒適家居的追光導(dǎo)光儲(chǔ)能系統(tǒng)研究
- 靜電紡絲法制備納米復(fù)合纖維研究進(jìn)展
- 基于數(shù)字信號(hào)處理的無線傳輸系統(tǒng)優(yōu)化與技術(shù)突破
- 電氣工程推動(dòng)的未來技術(shù)革命
- 機(jī)床精度提升技術(shù)在機(jī)械工程中的應(yīng)用
- 5G通信技術(shù)在智能交通系統(tǒng)中的應(yīng)用研究
- 再論AI對(duì)人的異化
- 2025年中科院分區(qū)表已公布!Scientific Reports降至三區(qū)
- 官方認(rèn)定!CSSCI南大核心首批191家“青年學(xué)者友好期刊名單”
- 2023JCR影響因子正式公布!
- 國(guó)內(nèi)核心期刊分級(jí)情況概覽及說明!本篇適用人群:需要發(fā)南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的學(xué)者
- 我用了一個(gè)很復(fù)雜的圖,幫你們解釋下“23版最新北大核心目錄有效期問題”。
- 重磅!CSSCI來源期刊(2023-2024版)最新期刊目錄看點(diǎn)分析!全網(wǎng)首發(fā)!
- CSSCI官方早就公布了最新南核目錄,有心的人已經(jīng)拿到并且投入使用!附南核目錄新增期刊!
- 北大核心期刊目錄換屆,我們應(yīng)該熟知的10個(gè)知識(shí)點(diǎn)。
- 注意,最新期刊論文格式標(biāo)準(zhǔn)已發(fā)布,論文寫作規(guī)則發(fā)生重大變化!文字版GB/T 7713.2—2022 學(xué)術(shù)論文編寫規(guī)則
- 盤點(diǎn)那些評(píng)職稱超管用的資源,1,3和5已經(jīng)“絕種”了