+ -

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)

热门下载

更多