编译结果是二进制吗
① c语言采用解释方式将源程序转换为二进制的目标代码吗
不是,C语言采用编译方式将源程序转换为二进制的目标代码。使用C语言编译器来完成。
所谓C语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析棚兆运,按照C语言的规则,将其转换成cpu可以执行的二进制文件。其本质在于对文件的读入,分析,及处理。
C语言编写的程序代码称为源程序,对于计算机本身来说,它并不能直接识别由高级语言编写的程序。C语言程序经C语言编译程序编译后,生成后缀为.obj的二进制文件(称为目标文猜纳件)。
此.obj文件必须与系统提供的各种库函数连接起来生成一个后缀为.exe的可执行文件才可以执行。C语言的可执行文件由一系列机器指令构成的。
(1)编译结果是二进制吗扩展阅读
解释执链梁行和编译执行是计算机语言的执行方式。解释执行由解释器现场解释执行,不生成目标程序。如BASIC便是解释执行,一般解释执行效率较低,低于编译执行。
编译执行由编译程序将目标代码一次性编译成目标程序,再由机器运行目标程序。如:PASCAL,C,C++,delphi等语言。效率高于解释执行。
② 请问c语言的源程序被编译后的代码是机器码吗
首先语言和被编译成的代码没有直接关系。有把Java编译成机器码的编译器也有把C语言编译成Java字节码的编译器。
机器码只是CPU直接认读的编码,不等于和硬件打交道的。操作硬件是你通过程序操作CPU做到的。操作系统只不过是别人写的程序而已,说到底还是程序。
③ 一个C#问题
Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。
obj是object的缩写,用于存放编译过程中生成的中间临时文件。其中都有debug和release两个子目录,分别对应调试版本和发行版本,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。
Properties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。
.cs 类文件。源代码都写在这里,主要就看这里的代码。
.resx 资源文件,一些资源存放在这里,一般不需要看。
.csproj C#项目文件,用VS打开这个文件就可以直接打开这个项目,自动生成,不需要看。
.csproj.user 是一个配置文件,自动生成的,会记录项目生成路径、项目启动程序等信息。也不需要看。
.Designer.cs 设计文件历橘,自动生成,不需要看。
.aspx 是肢盯团网页文件,HTML代码写在这里面。
sln:在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中.解决方案文件,他是一个或多个.proj(项目)的集合
*.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
比如是生则举成Debug模式,还是Release模式,是通用CPU还是专用的等.
④ python需要编译么
一个经常听见的问题,那就是:Python是解释型的语言吗?它会被编译吗?这个问题没有想象中那么好回答。和很多人认识世界一样,习惯以一个简单的模型去评判一些事物。而事实上,里面包含了很多很多的细节。
通常的说法,编译代表着将一个高级语言转化为 CPU 能执行的机器码。当你编译 C 的时候,的确是做的这样的操作。编译的结果是一个二进制可执行文件,这时你的系统可直接运行这个程序。
与此相对的,解释的意思是这样的:程序运行时每次读源文件中的一行代码,并执行相应的操作,就这样一行一行的重复下去。当然,所谓的脚本语言就是这么运行的。
但事实上,上面的定义有太多的局限。一门真正的语言,为了拥有更多有用和强大的特性,通常采用了各种各样的实现方式。我们可以将编译理解为更通用一些:将一种语言转化为另一种语言形式。通常来说,源语言比目标语言要更高级一些,比如将 C 转化为机器码。当然,JavaScript 8 到 JavaScript 5 的转化也算是一种编译。
在Python中,源代码会被编译为更低级的一种形式,我们称之为字节码。字节码是一串指令,和 CPU 的指令集类似。但是字节码并不直接被 CPU 执行,而是在虚拟机中执行的。当然,这里的虚拟机并不模仿整个操作系统的环境,只是提供了字节码执行的一个环境。
下面我们看 Python 的一小段代码以及它对应的字节码
看了字节码的内容后,我们就知道 f'...' 这种格式化字符串的形式的运行原理,就是将里面的字符串转化为一系列的字面字符串与变量,然后使用 + 号连接起来。
dis 是 Python 标准库中反汇编模块,它可以展示 Python 代码的字节码信息。上面提到的执行字节码的虚拟机,可以用任意的语言实现,包括 Python 自己。有兴趣的可以去 GitHub 上看下这个项目 nedbat/byterun 。这个项目可以用来学习,但不适用于生产环境。
不过,我们运行 Python 时完全感受不到它的编译过程,没有显示的调用什么编译程序,仅仅是简单的执行 .py 文件,编译都是需要时自动编译的。这和 JAVA 不同,当你每次写完 JAVA 代码要执行时,都要手动将其编译为 .class 文件,然后执行。也正是这个原因,JAVA 被称为编译型语言,而 Python 被叫做解释型语言。但事实上,两种语言执行时都会先编译成字节码,然后交给虚拟机执行。
Python还有一个重要的特性,就是交互式命令行。你可以敲入一行 Python 语句,然后立刻回车执行。实际上,即使是这个过程,Python 同样是先转为字节码,然后执行。而这个交互式命令行这个特性,在很多编译型语言里是没有的。同样因为没有显示的调用编译程序,很多人将执行Python源文件的程序叫做Python解释器。
即使比较简略,但还是补充下。部分编译型语言比如 C 或者 JAVA 也有交互式命令行,但这些并不是这些语言的重心。JAVA 刚开始是编译成字节码然后执行,后面有了即时编译技术( JIT )可以直接编译成机器码,与 C 类似。
从上面的描述可以看出,不管是解释还是编译,并没法完全分离开来。很多时候,我们想用一些词将现有的编程语言分个类,但事实上要办到这一点太难了。
最后要说明的是,你的代码是怎么执行的只是语言的实现问题,并非语言的特征。上文中,我们讨论的是 Python ,但实际上是 CPython 的描述。CPython 是一个解释器,之所以这么叫,是因为这个解释器是用 C 编写的,这也是 Python 默认的解释器。当然还有其它很多解释器,比如,PyPy 就是另一种解释器,使用了 JIT 技术,运行速度相比 CPython 有较大提升。
回到标题中的问题,Python之所以称为解释型语言,是因为它没有显示的调用编译操作,表现出解释型的特性比较多而已。但事实上,编译是存在的,具体怎么编译就看语言的实现了,也就是解释器的设计。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python需要编译么的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
⑤ c语言是如何编译成二进制
计算机专业有门课程叫做《编译原理》,详细讲述了怎么把高级语言翻译成汇编语言活着机器能看懂的二进制代码。
简单的说,C语言是通过编译器翻译成二进制代码的(就像英译汉的软件把英文翻译成汉语一样。把高级语言翻译成机器语言过程很复杂,学了编译原理就懂了)。还有编译器可以用各种语言编写,C语言可以被用C语言写的编译器来编译。
⑥ 编译程序是直接执行源程序吗
编译程序一般不是执行源程序,而是把我们写的文字型的代码编译为二进制的内容,然后去执行二进制的内容。
有些编程语言是需要编译的必须先编译在执行,而有些是脚本型的,则直接运行源程序就可以。
⑦ 在用vc进行c语言编程时所谓的编译是不是把自己打的c语言代码转换成二进制的数字
可以这么理解。
编译的过程就是把人能读懂的东西,变成人读不懂的东西,但是计算机能读懂的。
这些目标文件,如果人来看,就是一堆的二进制数字,参考黑客帝国 ;D
可是在计算机眼里,他们就不一样了,有些是指令,有些是数据。
⑧ C语言如何编译成可以直接在CPU运行的二进制码
路过。。。话说你要二进制文件干啥呢,我的大学老师告诉我,懂二进制的全世界就只有那么几个