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

    文章

    7530

    浏览量

    128520
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48610
收藏 人收藏

    评论

    相关推荐

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

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存器、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由编译器提供。
    发表于 04-26 14:53 32次阅读
    C<b class='flag-5'>语言</b>:嵌入式开发中的关键<b class='flag-5'>编译器</b>角色

    sot-223的第四管脚是用来做什么的

    sot-223的第四管脚是用来做什么的? 上面标有TAB IS VOUT或是TAB IS GND是什么意思?
    发表于 11-22 07:25

    嵌入式开发中的C语言编译器设置

    编译器的语义检查很弱小,甚至还会“掩盖”错误。现代的编译器设计是件浩瀚的工程,为了让编译器设计简单一些,目前几乎所有编译器的语义检查都比较弱小。为了获得更快的执行效率,C
    发表于 10-11 12:43 280次阅读

    C语言编译器代码优化及volatile详解 - 第14节 #硬声创作季

    函数代码c语言编译器
    充八万
    发布于 :2023年09月01日 13:32:35

    C语言编译器代码优化及volatile详解 - 第10节 #硬声创作季

    C语言程序函数代码编译器
    充八万
    发布于 :2023年09月01日 13:29:14

    C语言编译器代码优化及volatile详解 - 第8节 #硬声创作季

    C语言程序函数代码编译器
    充八万
    发布于 :2023年09月01日 13:27:34

    C语言编译器代码优化及volatile详解 - 第7节 #硬声创作季

    C语言程序函数代码编译器
    充八万
    发布于 :2023年09月01日 13:26:44

    C语言编译器代码优化及volatile详解 - 第6节 #硬声创作季

    C语言程序函数代码编译器
    充八万
    发布于 :2023年09月01日 13:25:53

    C语言编译器代码优化及volatile详解 - 第5节 #硬声创作季

    C语言程序函数代码编译器
    充八万
    发布于 :2023年09月01日 13:25:03

    C语言编译器代码优化及volatile详解 - 第3节 #硬声创作季

    C语言程序函数代码编译器
    充八万
    发布于 :2023年09月01日 13:23:23

    RealView编译工具4.0版编译器参考指南

    编译器有几种模式,在这些模式中,要么强制遵守源语言,要么放松遵守: 严格模式在严格模式下,编译器强制遵守与源语言相关的语言标准。 例如,使用
    发表于 08-18 06:13

    某种编程语言的第一个编译器是怎么来的呢?

    不知道你有没有想过,某种编程语言的第一个编译器是怎么来的呢?这不就是“鸡生蛋,蛋生鸡”的问题吗?
    的头像 发表于 08-14 09:31 524次阅读
    某种编程<b class='flag-5'>语言</b>的第一个<b class='flag-5'>编译器</b>是怎么来的呢?

    RealView用于BREW编译器和库的编译工具指南

    只要有可能,编译器就会采用Windows/MS-DOS用户所熟悉的广泛使用的命令行选项。 ARM C编译器按照ISO/IEC 9899:1990(E)的定义编译
    发表于 08-12 07:38

    编译原理:语言处理器、编译器的结构

    计算机是只认识二进制的,但是我们平常开发中根本不会使用二进制进行开发,我们使用的都是 Java、C 这类的高级语言,每种语言都会经过一系列的转换才能被计算机识别,那么到底是谁做的这项工作呢?一个被称为 编译器(compiler)
    发表于 08-09 09:52 194次阅读
    <b class='flag-5'>编译</b>原理:<b class='flag-5'>语言</b>处理器、<b class='flag-5'>编译器</b>的结构

    CC78K0R Ver.2.00 C语言编译器

    CC78K0R Ver.2.00 C语言编译器
    发表于 04-28 19:19 1次下载
    CC78K0R Ver.2.00 C<b class='flag-5'>语言</b><b class='flag-5'>编译器</b>