0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言编译器是用来做什么的

汽车玩家 来源:电子发烧友网 2018-03-27 13:47 次阅读

C语言编译器及其实例

C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

直接插入排序(Straight Insertion Sort)的基本思想是将新记录插入到已经排好序的有序表中,初始有序表只有无序表的第一个数据,依次对无序表每个数据进行直接插入排序,从而得到了有序表,具体步骤为

若新记录小于有序表高位l.r[j],则设置哨兵

有序表后移,j+1=j

重复第2步,直至新纪录》=有序表中的j记录,则j+1就是要插入的位置

从而得到一个新的、记录数增加1的有序表。

#include 《stdio.h》

typedef float keyType;

typedef struct{

keyType score;

char name[20];

}student;

typedef struct{

int length=6;

student stu[6];

}sqList;

void SIS(sqList &L){

for(int i=2;i《L.length;i++){

if(L.stu[i].score》L.stu[i-1].score){

L.stu[0]= L.stu[i]://设置哨兵

int j;

for(j=i-1;L.stu[0].score》L.stu[j].score;j--)

L.stu[j + 1]= L.stu[j];//记录后移

L.stu[j+ 1]= L.stu[0]://找到位置,插入元素

}

}

}

int main(){

sqList L;

for(int i= 1;i《L.length;i+ +){

printf(“ 请输入第%d个学生的姓名:”,i);

gets(L.stu[i].name);

printf(“分数:”);

sCanf(“%f”,&(L.stu[j].score);

getchar();

}

SIS(L);

for(int i= 1;i《L.length;i++){

printf(“ 学生%s 分数%f 第%d 名”,L.stu[j].name,Lstce);

}

语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。

目前最流行的C语言编译器有以下几种:·GNU Compiler Collection 或称 GCC·Microsoft C 或称 MS C·Borland Turbo C 或称 Turbo C这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

编译器及其主要工作流程

编译器,是将便于人编写,阅读,维护的高阶计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高阶语言 (High-level language), 如 Pascal、C++Java 等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

一个现代编译器的主要工作流程如下:

源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 连接器 (Linker) → 可执行程序 (executables)

将C语言源代码编译成计算机可直接运行的目标代码或机器码。说白了就是把更加贴近于人类语言的程序语言翻译成更贴近计算机的机器语言。

实现了基本高级语言所必须的语法要素,包括简单变量声明、函数的实现、整数和字符串运算、条件判断语句和循环语句及跳转语句、基本代数运算、赋值等,还支持汇编语言嵌入。本编译器是利用编译器生成器Parse Generator和VC6.0在Windows平台上实现的,并开发了一个基于Windows平台的32位编译集成开发环境CompilerMan,提供了关键字彩色提示、出错同屏提示、出错代码跳转等较为完善方便的功能。由于编译程序本身涉及到词法分析、语法分析、代码生成、错误恢复和优化等诸多模块,要在实验中做到面面俱到不太可能,所以本编译器不可避免的会存在各种问题,但作为一个具有基本功能的、可扩充的系统,完全达到巩固编译原理的理论知识,并将其运用。

编译程序,就是一种具有编撰和翻译功能的程序。人们要用计算机来解决问题,首先面临的一个问题,就是要告诉计算机解决什么问题,或者告诉计算机如何解决这个问题。这就涉及到用什么样的语言来描述的问题,人所习惯的自然语言和计算机认识的机器语言有很大的差别,用机器语言来描述人想解决的问题十分不便,因而,计算机科学家设计一些人们比较习惯的语言来描述要解决的问题,称之为高级语言。

用语言来描述的问题,统称为程序。然而,用高级语言写的程序,不能被计算机所直接认识和理解,必须经过等价的转换,变成机器能理解并执行的机器语言的程序。进行这种等价转换工作的工具,就是编译程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7601

    浏览量

    136266
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49060
收藏 人收藏

    评论

    相关推荐

    在ads1261的通用c语言例程中的390行的if是用来区分什么的呢?

    你好我想知道在ads1261的通用c语言例程中的390行的if是用来区分什么的呢,在读取数据中什么情况下取ff,什么情况写取00呢
    发表于 11-27 07:58

    MSP430优化C/C++编译器v21.6.0.LTS

    电子发烧友网站提供《MSP430优化C/C++编译器v21.6.0.LTS.pdf》资料免费下载
    发表于 11-08 14:57 0次下载
    MSP430优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>v21.6.0.LTS

    ARM优化C/C++编译器 v20.2.0.LTS

    电子发烧友网站提供《ARM优化C/C++编译器 v20.2.0.LTS.pdf》资料免费下载
    发表于 11-07 10:46 0次下载
    ARM优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b> v20.2.0.LTS

    音频子系统主要是用来做什么的,可以用来做PCM编码吗?

    请问,音频子系统主要是用来做什么的,可以用来做PCM编码吗?支持PCM编码输出吗?
    发表于 11-07 07:38

    TMS320C6000优化C/C++编译器v8.3.x

    电子发烧友网站提供《TMS320C6000优化C/C++编译器v8.3.x.pdf》资料免费下载
    发表于 11-01 09:35 0次下载
    TMS320<b class='flag-5'>C</b>6000优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>v8.3.x

    TMS320C28x优化C/C++编译器v22.6.0.LTS

    电子发烧友网站提供《TMS320C28x优化C/C++编译器v22.6.0.LTS.pdf》资料免费下载
    发表于 10-31 10:10 0次下载
    TMS320<b class='flag-5'>C</b>28x优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>v22.6.0.LTS

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    <b class='flag-5'>C</b>7000优化<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如将高级语言编写的源代码
    的头像 发表于 07-17 18:28 1506次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 1727次阅读

    SEGGER编译器优化和安全技术介绍 支持最新CC++语言

    SEGGER编译器是专门为ARM和RISC-V微控制设计的优化C/C++编译器。它建立在强大的Clang前端上,支持最新的
    的头像 发表于 06-04 15:31 1410次阅读
    SEGGER<b class='flag-5'>编译器</b>优化和安全技术介绍 支持最新<b class='flag-5'>C</b>和<b class='flag-5'>C</b>++<b class='flag-5'>语言</b>

    C语言:嵌入式开发中的关键编译器角色

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存、存取数据、控制硬件等,C语言和硬件之间由
    发表于 04-26 14:53 569次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>:嵌入式开发中的关键<b class='flag-5'>编译器</b>角色

    C语言#define的应用

    C/C++ 编程语言中,当程序被编译时,被发送到编译器编译器将程序转换为机器
    发表于 03-06 11:29 351次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>#define的应用

    RX系列V3.06.00的C/C++编译器包数据手册

    电子发烧友网站提供《RX系列V3.06.00的C/C++编译器包数据手册.pdf》资料免费下载
    发表于 01-26 15:57 1次下载
    RX系列V3.06.00的<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++<b class='flag-5'>编译器</b>包数据手册

    RL78系列的C编译器包数据手册

    电子发烧友网站提供《RL78系列的C编译器包数据手册.pdf》资料免费下载
    发表于 01-26 15:55 1次下载
    RL78系列的<b class='flag-5'>C</b><b class='flag-5'>编译器</b>包数据手册

    Triton编译器的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton已被采用
    的头像 发表于 12-16 11:22 2774次阅读
    Triton<b class='flag-5'>编译器</b>的原理和性能