‘壹’ 在C语言中,计算机程序通常有哪几种错误
1、系统错误:这是指程序没有语法错误和逻辑错误,但程序的正常运行依赖于某些外部条件的存在,如果这些外部条件缺失,则程序将不能运行。
2、语法错误:这是指程序中含有不符合语法规定的语句,例如关键字或符号书写错误(将printf写成print、将数组元素引用写成a(2)等)、使用了未定义的变量、括号不配对等。
3、逻辑错误:这是指程序中没有语法错误,可以通过编译、连接生成可执行程序,但程序运行的结果与预期不相符的错误。
C语言程序的特点
1、采用结构化的控制语句,是完全模块化和结构化的语言。
2、数据类型丰富,具有现代语言的各种数据结构
3、语法限制不太严格,程序设计自由度大,同时也意味着容错性差。
4、允许直接访问屋里内存,能进行位操作,能实现汇编语言的大部分功能,可直接对硬件进行操作,兼有高级和低级语言的特点。
5、目标代码质量高,程序执行效率高(比汇编程序生成的目标代码低10%-20%)
6、允许在编译之前使用预处理命令,提高编程效率。
7、以内存使用为核心。
8、C语言程序是由函数构成的。一个源程序不论有多少个文件组成,包含多少个函数,都有且一个 main 函数,及主函数。一个程序总是从 main 函数开始执行,而不论 main 函数在程序什么位置,程序的执行也结束于主函数,其他函数通过函数调用被执行。
9、函数都要有类型说明,放在函数名前,如 void 表示空类型,没有返回值。
10、函数体内语句一般按四大功能顺次排列,即首先对变量与函数做声明 ——>变量赋初值 ——>数据计算与处理 ——>输出结果。
‘贰’ 璁烘枃鍐欎綔涓链夊摢浜涘父瑙佺殑涓鏂囱娉曢敊璇闇瑕佹敞镒忥纻
鍦ㄨ烘枃鍐欎綔涓锛屼腑鏂囱娉曢敊璇鏄甯歌佺殑闂棰树箣涓銆备互涓嬫槸涓浜涘父瑙佺殑涓鏂囱娉曢敊璇闇瑕佹敞镒忥细
1.涓昏皳涓崭竴镊达细涓昏鍜岃皳璇鍦ㄤ汉绉般佹暟绛夋柟闱㈠簲璇ヤ缭鎸佷竴镊淬备緥濡傦纴钬滀粬浠锽沧㈣讳功钬濇槸姝g‘镄勶纴钥屸滀粬浠锽沧㈣讳功镄勨濇槸阌栾镄勚
2.镞舵佹贩涔憋细鍦ㄦ弿杩拌繃铡汇佺幇鍦ㄦ垨链𨱒ョ殑浜嬫儏镞讹纴搴旇ヤ娇鐢ㄦg‘镄勬椂镐併备緥濡傦纴钬沧垜鏄ㄥぉ铡讳简锲句功棣嗏濇槸姝g‘镄勶纴钥屸沧垜鏄ㄥぉ铡诲浘涔﹂嗕简钬濇槸阌栾镄勚
3.璇嶅簭涓嶅綋锛氩湪鍙ュ瓙涓锛岃瘝璇镄勯‘搴忓簲璇ョ﹀悎姹夎镄勮娉曡勫垯銆备緥濡傦纴钬滀粬锽沧㈠悆鑻规灉钬濇槸姝g‘镄勶纴钥屸滀粬钖冨枩娆㈠悆鑻规灉钬濇槸阌栾镄勚
4.铏氲瘝婊ョ敤锛氲櫄璇嶅傗灭殑钬濄佲滃湴钬濄佲滃缑钬濈瓑搴旇ュ湪阃傚綋镄勫湴鏂逛娇鐢ㄣ备緥濡傦纴钬滀粬镄勪功钬濇槸姝g‘镄勶纴钥屸滀粬镄勪功镄勨濇槸阌栾镄勚
5.骞跺垪缁撴瀯涓嶆竻鏅帮细褰扑娇鐢ㄥ苟鍒楃粨鏋勬椂锛屽簲璇ユ敞镒忓苟鍒楁垚鍒嗕箣闂寸殑阃昏緫鍏崇郴銆备緥濡傦纴钬沧垜锽沧㈢湅鐢靛奖鍜屽惉阔充箰钬濇槸姝g‘镄勶纴钥屸沧垜锽沧㈢湅鐢靛奖鍜屽惉阔充箰镄勨濇槸阌栾镄勚
6.鐪佺暐涓嶅綋锛氩湪蹇呰佺殑𨱍呭喌涓嬶纴鍙浠ラ傚綋鐪佺暐涓浜涜瘝璇锛屼絾搴旇ユ敞镒忎笉褰卞搷鍙ュ瓙镄勫畬鏁存у拰鍑嗙‘镐с备緥濡傦纴钬滀粬铡讳简鍖椾含锛堣屼笉鏄鍏朵粬鍦版柟锛夆濇槸姝g‘镄勶纴钥屸滀粬铡讳简鍖椾含锛堣屼笉鏄鍏朵粬鍦版柟锛夌殑钬濇槸阌栾镄勚
7.镙囩偣绗﹀彿阌栾锛氭爣镣圭﹀彿镄勪娇鐢ㄥ簲璇ョ﹀悎姹夎镄勮勮寖銆备緥濡傦纴钬沧垜锽沧㈠悆鑻规灉銆傗濇槸姝g‘镄勶纴钥屸沧垜锽沧㈠悆鑻规灉銆傗濇槸阌栾镄勚
‘叁’ C语言编译原理是什么
编译共分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。
1、预处理阶段:
主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)
2、汇编阶段:
插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,编译器把代码翻译成汇编语言,同时将扩展名为“.i”的文件翻译成扩展名为“.s”的文件。
3、编译阶段:
将汇编语言翻译成机器语言指令,并将指令打包封存成可重定位目标程序的格式,将扩展名为“.s”的文件翻译成扩展名为“.o”的二进制文件。
4、链接阶段:
在示例代码中,改代码文件调用了标准库中printf函数。而printf函数的实际存储位置是一个单独编译的目标文件(编译的结果也是扩展名为“.o”的文件),所以此时主函数调用的时候,需要将该文件(即printf函数所在的编译文件)与hello world文件整合到一起,此时链接器就可以大显神通了,将两个文件合并后生成一个可执行目标文件。