您的位置:首页 > 运维架构 > Linux

Linux C编程一站式学习 笔记

2010-08-10 16:56 477 查看
关于程序的讨论里提到了C语言的可移植,原本不知道为什么,现在知道,原来是因为各种平台上都有C语言的编译器,这就好像是一种由于广泛使用而成为规范的东西一样,当所有机器上都有你的编译器的时候,你的可移植性当然强了。

之前看v6shell的代码就没明白词法和语法有什么差别,这里讲到了词法就是单词(token)的规则,而语法是单词和结构的规则。而形式语言,这里的编程语言C语言是理所当然的形式语言,所以没有自然语言的那么多歧义,而是看字面意思。

程序里的错误分成:1编译时错误,一般是编译器发现的语法错误;2运行时错误,编译通过,但是实际运行时出错甚至程序崩溃;3逻辑错误和语义错误,也就是你想让程序完成的任务编写的代码虽然能够运行,但结果不是你想要的这类错误,需要头脑清晰的分析出错的地方。

例如printf(1);语句会产生警告信息,但编译还是能通过,在运行时会有segmentation fault错误,所以是运行时错误。有时编译器不提示一些不是很严重的警告,比如printf(0);当想看到这类警告时要用gcc -Wall选项。

由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal)。

表 2.1. C标准规定的转义字符

/'单引号'(Single Quote或Apostrophe)
/"双引号"
/?问号?(Question Mark)
//反斜线/(Backslash)
/a响铃(Alert或Bell)
/b退格(Backspace)
/f分页符(Form Feed)
/n换行(Line Feed)
/r回车(Carriage Return)
/t水平制表符(Horizontal Tab)
/v垂直制表符(Vertical Tab)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: