linux c编程一站式学习 笔记...
时间:2010-08-09 来源:foolloow
关于程序的讨论里提到了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) |
相关阅读 更多 +