優(yōu)勝從選擇開始,我們是您最好的選擇!—— 中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)
0373-5939925
2851259250@qq.com
我要檢測(cè) 我要投稿 合法期刊查詢
您的位置:網(wǎng)站首頁 > 優(yōu)秀論文 > 正文

C語言編譯環(huán)境的教學(xué)分析

作者:楊超來源:日期:2014-01-21人氣:1335

關(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

網(wǎng)絡(luò)客服QQ: 沈編輯

投訴建議:0373-5939925????投訴建議QQ:

招聘合作:2851259250@qq.com (如您是期刊主編、文章高手,可通過郵件合作)

地址:河南省新鄉(xiāng)市金穗大道東段266號(hào)中州期刊聯(lián)盟 ICP備案號(hào):豫ICP備2020036848

【免責(zé)聲明】:中州期刊聯(lián)盟所提供的信息資源如有侵權(quán)、違規(guī),請(qǐng)及時(shí)告知。

版權(quán)所有:中州期刊聯(lián)盟(新鄉(xiāng)市博翰文化傳媒有限公司)

關(guān)注”中州期刊聯(lián)盟”公眾號(hào)
了解論文寫作全系列課程

核心期刊為何難發(fā)?

論文發(fā)表總嫌貴?

職院?jiǎn)挝话l(fā)核心?

掃描關(guān)注公眾號(hào)

論文發(fā)表不再有疑惑

論文寫作全系列課程

掃碼了解更多

輕松寫核心期刊論文

在線留言