c編寫的程序經過編譯
A. c璇璦婧愮▼搴忔枃浠剁粡榪囩紪璇戝悗鐢熸垚鏂囦歡鐨勬墿灞曞悕
c璇璦婧愮▼搴忔枃浠剁粡榪囩紪璇戝悗鐢熸垚鏂囦歡鐨勬墿灞曞悕.obj銆
褰揅璇璦婧愪唬鐮佽緙栬瘧鍚庯紝閫氬父浼氱敓鎴愪竴涓鈥.o鈥濓紙object file錛夋枃浠躲傝繖涓鏂囦歡鍖呭惈浜嗙紪璇戝櫒鎵浜х敓鐨勬満鍣ㄤ唬鐮侊紝浣嗘槸瀹冭繕娌℃湁琚閾炬帴鍒板叾浠栨ā鍧楁垨搴撲腑銆傜浉搴斿湴錛屽湪涓嶅悓鐨勬搷浣滅郴緇熶笂鍙鑳戒細鏈変笉鍚岀殑鍚庣紑鍚嶅拰浜岃繘鍒舵牸寮忋備緥濡傦紝Windows涓婄殑Visual C++緙栬瘧鍣ㄤ嬌鐢ㄢ.obj鈥濅綔涓虹洰鏍囨枃浠剁殑鎵╁睍鍚嶃
鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝C璇璦緇忚繃緙栬瘧鍚庣敓鎴愮殑鏂囦歡鍚庣紑鍚嶆槸鈥.o鈥濓紝涔熷彲浠ユ槸鈥.obj鈥濇垨鍏朵粬鎿嶄綔緋葷粺鐗瑰畾鐨勬牸寮忋傝繖浜涙枃浠跺寘鍚浜嗙紪璇戝櫒鎵浜х敓鐨勬満鍣ㄤ唬鐮侊紝騫朵笖閫氬父闇瑕侀摼鎺ュ埌涓璧鋒墠鑳界敓鎴愬彲鎵ц屾枃浠躲
C璇璦綆浠
C璇璦鏄涓闂ㄩ潰鍚戣繃紼嬬殑璁$畻鏈虹紪紼嬭璦錛屼笌C++銆丆#銆丣ava闈㈠悜瀵硅薄緙栫▼璇璦鏈夋墍涓嶅悓銆侰璇璦鐨勮捐$洰鏍囨槸鎻愪緵涓縐嶈兘浠ョ畝鏄撶殑鏂瑰紡緙栬瘧銆佸勭悊浣庣駭瀛樺偍鍣ㄣ佷粎浜х敓灝戦噺鐨勬満鍣ㄧ爜浠ュ強涓嶉渶瑕佷換浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑緙栫▼璇璦銆
C璇璦鎻忚堪闂棰樻瘮奼囩紪璇璦榪呴熴佸伐浣滈噺灝忋佸彲璇繪уソ銆佹槗浜庤皟璇曘佷慨鏀瑰拰縐繪嶏紝鑰屼唬鐮佽川閲忎笌奼囩紪璇璦鐩稿綋銆侰璇璦涓鑸鍙姣旀眹緙栬璦浠g爜鐢熸垚鐨勭洰鏍囩▼搴忔晥鐜囦綆10%鈥20%錛屽洜姝C璇璦鍙浠ョ紪鍐欑郴緇熻蔣浠躲
褰撳墠闃舵碉紝鍦ㄧ紪紼嬮嗗煙涓錛孋璇璦鐨勮繍鐢ㄩ潪甯鎬箣澶氾紝瀹冨吋欏句簡楂樼駭璇璦鍜屾眹緙栬璦鐨勪紭鐐癸紝鐩歌緝浜庡叾瀹冪紪紼嬭璦鍏鋒湁杈冨ぇ浼樺娍銆傝$畻鏈虹郴緇熻捐′互鍙婂簲鐢ㄧ▼搴忕紪鍐欙紝鏄疌璇璦搴旂敤鐨勪袱澶ч嗗煙銆傚悓鏃訛紝C璇璦鐨勬櫘閫傝緝寮猴紝鍦ㄨ稿氳$畻鏈烘搷浣滅郴緇熶腑閮借兘澶熷緱鍒伴傜敤錛屼笖鏁堢巼鏄捐憲銆
B. 用 C 語言編寫的源文件經過編譯,若沒有產生編譯錯誤,則系統將( )。
答案是錯誤的,系統將生成目標文件,選B。因為C語言中編譯程序是把一個源程序翻譯成目標程序的工作過程。這一過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。在語法分析過程中發現有語法錯誤,給出提示信息,沒有錯誤則生成目標文件。
C語言通過匯編把匯編語言代碼翻譯成目標機器指令。對於被翻譯系統處理的每一個C語言源程序,都將最終經過這一處理而得到相應的目標文件。目標文件中所存放的也就是與源程序等效的目標的機器語言代碼。
(2)c編寫的程序經過編譯擴展閱讀
C語言的源文件成為目標文件的過程:
1、源文件經過預處理,生成.i的文件 (預處理器cpp)。
2、將預處理後的文件轉換成匯編語言,生成文件.s文件。
3、從匯編變為目標代碼(機器代碼)生成.o(.obj)的文件(匯編器as)。
4、連接目標代碼,生成可執行程序(連接器ld)。
C. 用C語言編寫的源程序必須經過編譯連接後,生成擴展名為.EXE的可執行文件,才能運行對嗎
哥們,這么理解是對的,不過感覺有點表面。
建議看看計算機一些原理,像你說的這個問題我會想到,計算機最終只能識別二進制碼,
所以其實不管我們一切啥語言,最終都是通過編譯器編譯成二進制碼,計算機才能識別
而去運行,而C語言編寫的程序,肯定是要經過一系列的編譯,鏈接,生成可執行的文件。
在windows系統中,執行文件都是.exe為擴展名的。不過在linux系統中就不一樣了,linux
系統並不區分擴展名,所以也就無所謂什麼.exe之類的文件,只要知道最終生成可執行的
二進制文件就可以了。
D. 一個C語言源程序經過編譯後就可以執行了 這句話對嗎
對的,C語言是先編譯後執行,一般只要不出錯誤,編譯完就可以執行力。有時候還要考慮是否跨平台。
E. c璇璦紼嬪簭緇忚繃緙栬瘧鍚庣敓鎴愭枃浠剁殑鍚庣紑鏄
C璇璦紼嬪簭緇忚繃緙栬瘧鍚庣敓鎴愮殑鏂囦歡鍚庣紑閫氬父鏄<strong>.obj</strong>鎴<strong>.o</strong>銆
榪欎簺鍚庣紑鏄瀵硅薄鏂囦歡錛坥bject file錛夌殑鍚庣紑錛屽畠浠鏄婧愪唬鐮佺紪璇戝悗鐨勪腑闂存枃浠訛紝閫氬父鍖呭惈浜嗕竴浜涙満鍣ㄤ唬鐮佸拰絎﹀彿琛ㄤ俊鎮銆
涓轟簡鏇村ソ鍦扮悊瑙h繖涓闂棰橈紝鎴戜滑闇瑕佺煡閬撶紪璇戞槸涓涓灝嗘簮浠g爜杞鎹涓烘満鍣ㄤ唬鐮佺殑榪囩▼銆傚湪緙栬瘧榪囩▼涓錛岀紪璇戝櫒浼氬皢婧愪唬鐮佷腑鐨勬寚浠ゅ拰鏁版嵁鎻愬彇鍑烘潵錛岀劧鍚庢寜鐓х壒瀹氱殑鏍煎紡閲嶆柊緇勭粐鎴愭満鍣ㄤ唬鐮併傝繖涓榪囩▼閫氬父浼氱敓鎴愪竴涓鎴栧氫釜瀵硅薄鏂囦歡銆
涓轟簡浣跨瓟妗堥氫織鏄撴噦錛屾垜浠鍙浠ヨ繖鏍瘋В閲婏細褰撲綘鍦ㄧ數鑴戜笂緙栧啓C璇璦紼嬪簭鏃訛紝浣犻渶瑕佷竴涓緙栬瘧鍣ㄦ潵灝嗕綘鐨勬簮浠g爜杞鎹涓哄彲浠ュ湪浣犵殑鐢佃剳鎴栫綉緇滀笂榪愯岀殑紼嬪簭銆傜紪璇戝櫒浼氬皢浣犵殑婧愪唬鐮佽漿鍖栦負涓縐嶇壒孌婄殑鏈哄櫒璇璦錛岃繖縐嶈璦鍙浠ョ洿鎺ヨ璁$畻鏈虹‖浠剁悊瑙e苟鎵ц屻傝繖涓鐗規畩鐨勬満鍣ㄨ璦鏂囦歡閫氬父琚縐頒負瀵硅薄鏂囦歡錛屽洜涓哄畠浠鍖呭惈浜嗙紪璇戝悗鐨勪唬鐮佸拰涓浜涘叾浠栫殑淇℃伅錛屽傜﹀彿琛ㄧ瓑銆
鎵浠ワ紝褰撲綘緙栬瘧涓涓狢璇璦紼嬪簭鏃訛紝浣犻氬父浼氬緱鍒頒竴涓鎴栧氫釜浠<strong>.obj</strong>鎴<strong>.o</strong>涓哄悗緙鐨勬枃浠躲傝繖浜涙枃浠跺寘鍚浜嗙紪璇戝悗鐨勪唬鐮佸拰鍏朵粬淇℃伅錛屽畠浠鍙浠ヨ閾炬帴鍣ㄧ敤鏉ュ壋寤烘渶緇堢殑鍙鎵ц屾枃浠躲
F. 用 C 語言編寫的源文件經過編譯,若沒有產生編譯錯誤,則系統將
本題正確答案應為B選項。
C選項為錯誤答案。
原因如下:
1、編譯程序僅僅是將源語言編寫的源程序轉換為目標程序。
2、編譯是把高級語言變成計算機可以識別的2進制語言。
3、編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。
顯然,編譯的過程中並沒有運行程序輸出結果的步驟茄戚,編譯的結果是生成目標文件(代碼)。
因此C選項為錯誤答案,B選項為正確答案。
編譯原理圖如下:
(6)c編寫的程序經過編譯擴展閱讀:
目標代碼(目標文件)生成是編顫絕陵譯的最後一個階段。目標代碼生成器把語法分析後或優化後的中間代碼變換成目標代碼。目標代碼有三種形式:
1、 可以立即執行的機器語言代碼,所有地址都重定位;
2、待裝配的機器語言模塊,當需要執行時,由連接裝入程序把它們和某些運行程序連接起來,轉換成能執行的機器語言代碼;
3、匯編語言代碼,須經過匯編程序匯編後,成為可執行的機器語言代碼。
目標代碼生成階段應考慮直接影響到目標代碼速度的三個問題:一是如何生成較短的目標代碼;二是如何充分利用計算機中的寄存器,減少目標代碼訪問存儲單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標代碼的質量。
參考資料:
編譯宏賣_網路
G. C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。
如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。
然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。
(7)c編寫的程序經過編譯擴展閱讀:
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。
一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。
編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。
源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。
而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。
最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。