c语言编译后,c语言编译后生成的文件扩展名为

dfnjsfkhak 36 0

大家好,今天小编关注到一个比较意思的话题,就是关于c语言编译后的问题,于是小编就整理了2个相关介绍c语言编译后的解答,让我们一起看看吧。

  1. C语言程序编译成功之后,我试着运行了调试,然后出现这样的结果?
  2. 所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件操作上吗?

C语言程序译成功之后,我试着运行调试然后出现这样的结果

程序应该已经运行了,你在return0;前面加上system("pause");并且在文件开头加上相应到头文件#include<stdlib.h>就可以看到程序运行的结果了。那些警告可以忽略,我记得我当时也是这样的。

所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件上吗?

计算机能够识别的语言只有机器语言,也就是0-1代码,咱们可以直接编写0-1代码让计算执行程序,没有问题。但是,这就增加我们学习编程的学习成本和编程成本,为此咱们的前辈们开发了编程语言,最早的是汇编语言通过编译器将汇编语言变成机器语言;另外一种是高级语言,像pythonjavaC++、MATLAB、VB等等。高级语言接近于人类语言,学习成本、编程成本低,汇编语言学习成本较高,目前除了对计算速度要求极其严格的环境一般不***用汇编语言。

c语言编译后,c语言编译后生成的文件扩展名为-第1张图片-芜湖力博教育咨询公司
图片来源网络,侵删)

因此,高级语言和汇编语言不是递进的关系,即高级语言不会编译成汇编语言,他们都会变成机器语言(即0-1代码),供计算机硬件识别并驱动计算机完成相关功能

我认为只是一小部分很low的高级语言需要C语言中转编绎。大多数PC机语言直接编绎成宏汇编语言或者更直接的机器语言的形式执行;而更低级的单片机语言,无论是C还是汇编,都直接编绎为机器码,直接可被设备识别。

像高级的C++语言,如果进行调试,基本以宏汇编语言的形式出现,VC,VS等基本如此。当然,要让机器识别,最后必然是机器码。

c语言编译后,c语言编译后生成的文件扩展名为-第2张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

也有很多很low的高级语言,必须先转为C,再执行。这种语言效率都很低,可以理解为2次开发。这也是为什么很多小公司、个人都可以做编绎器,小、特定场合用用可以。

对于单片机编程,简单很多。这也是为什么单片机编绎程序众多的主要原因。特别是最low的51系到8位程序的编绎,初学者都可以尝试做。当然做到极致也是不容易的。

用C写的程序才会被编译成汇编语言,再由汇编器翻译成机器码。是这样的,要搞清楚一点,只有机器语言才能和底层硬件打交道,也就是每种高级语言的最终执行代码都是机器码,至于中间形式的目标代码则有很多种,像Java语言的代码被编译成一种叫字节码的中间代码,然后由相应平台的JVM翻译成机器码执行,还有的像J***aScript, Python这种解释型的语言根本就不经过编译,而是逐条代码直接翻译成机器码再执行。很多时候说C语言是最基础的语言并不是说所有语言都要往C语言上走一遍,一部分原因是因为C语言的特性使得它适合编写一些语言的底层支持模块,还有就是操作系统是由C语言编写的,应用程序与操作系统交互需要调用一些C写的模块。总之,你完全可以自己发明一种语言,你定义语法规则,再写一个针对这种需要的编译器,能翻译成平台兼容的机器语言,那样就可以执行了。所以不存在什么语言都要转成C这一说

c语言编译后,c语言编译后生成的文件扩展名为-第3张图片-芜湖力博教育咨询公司
(图片来源网络,侵删)

实际情况并不是这样的。

我们来一条条的看吧:

1.编程语言并不是都要编译成C,这个说法不知道是谁提出来的。C语言和j***a,python一样,也是一种高级语言。但是C语言有个优势,就是可以嵌套汇编,实现底层交互。

2.很多人存在一个误区,汇编语言就是最底层的语言了,其实计算机还是不认识汇编是个什么东西, 因为计算机只能识别一种语言,那就是机器语言,全都是0和1这样的二进制数。比方说MOV AX,BX,这条汇编的意思是寄存器将BX的内容转移到AX中,对应机器语言的1000100111011000,非常复杂。可以这么理解:汇编语言实际上是机器指令的一种简写形势。

可以看看下图,做一个简单的加法运算,分别用C语言,汇编和机器语言[_a***_],各位就能理解高级语言的好处了。

无论是C还是其他什么语言,最终的目的都是实现某种功能,而这离不开硬件的支持,所以归根结底,还是要从程序和硬件的关系说起。

在计算机中存在着大量的电子元件,电路就两种情况:开和关,这两种状态分别用1和0来表示,也就是众所周知的二进制在计算机中,所有的运算都是以二进制的形式进行的,比方说3+4,在CPU中的表现形式为00110000+01000000,如果是负数运算或浮点运算的话还会更复杂一些,这里不再累述。

通过0和1决定电路状态,那么操作者是通过编程语言操作硬件的呢?这里编译器的作用就体现出来了。

编译器就像是一个翻译一样,也就任人们口中俗称的编程软件。其实用更专业的话来说,编译器实际上是IDE(开发集成环境)中的一个工具

虽然大家可能在操作中感受不是那么强烈,但如果你在windows控制台下用j***ac编译过j***a代码,或者你在linux命令行下编译过程序,这个时候我们就直接使用了编译器。

到此,以上就是小编对于c语言编译后的问题就介绍到这了,希望介绍关于c语言编译后的2点解答对大家有用

标签: 语言 译成 汇编语言