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)。