【C语言】02 基本概念

毫无疑问,学习一门编程语言的基础知识不如编写程序有趣,但是,不了解语言的语法知识,会使你在编写程序时缺少乐趣。


2.1  环境

在ANSI C的任何一种实现中,存在两种不同的环境。

第一种是翻译环境(translation environment),在这个环境里,源代码被转换为可执行的机器指令。

第二种是执行环境(execution environment),用于实际执行代码。


2.1.1  翻译

翻译阶段由几个步骤组成:

1、组成一个程序的每个(可能是多个)源文件通过编译过程分别转换为目标代码(object code)。

2、各个目标文件由链接器(linker)捆绑在一起,(linker的作用是引入标准C函数库中任何被该程序所用到的函数以及程序员个人函数库)。

3、形成单一而完整的可执行程序。


编译过程本身也由几个步骤组成:

1、预处理器(preprocessor)处理。(具体的细节后续讲解)

2、源代码解析(parse)。

3、产生目标代码。

目标代码是机器指令的初步形成,如果在编译程序的命令行加入优化选项,优化器就会对目标代码进一步处理,使其效率更高。


2.2  词法规则

2.2.1  字符

标准并没有规定C环境必须使用哪种字符集,但我们通常使用 ASC I I 码字符集。

1空白字符:

包括空格,水平制表符,垂直制表符,格式反馈字符和换行符,当他们被打印出来的时候,出现的是空白而不是各种记号,因此称为空白字符。

2、三字母词:

就是由两个问号开头再尾随一个字符组成。例如:

printf("Delete file (are you sure??):");

结果输出中产生 ] 字符,脑中要有印象,不要大吃一惊。

3、转义字符:

转义字符由一个反斜杠 \ 加上一个或多个其他字符组成。


下面的四个转义字符代表反斜杠后面那个字符:


\?  用于连续书写多个?时使用,防止被解释为三字母词;

\"  用于表示字符串常量内的双引号;

\'  用于表示字符常量 ';

\\  用于表示一个反斜杠,防止被解释为转义字符;


还有许多转义字符并不在源代码出现,但在格式化输出或操纵终端显示屏时非常有用:


\a  警告字符

\b  退格(back)

\f  进纸字符

\n  换行符(newline)

\r  回车(return)

\t  水平制表符

\v  垂直制表符

\ddd  ddd代表1~3个8进制数字

\xdd  dd代表1~2个16进制数字

所有的字符均可由转义字符表示。


2.2.2  注释

C89只有一种注释方式,注释以字符 /* 开始,以字符 */ 结束,中间可以包含任何除 */ 之外的任何字符(即不能嵌套使用注释)。这种注释称为多行注释或块注释。注意:若 /* 和 */ 出现在字符串字面值内,不再起注释作用。

不允许嵌套使用是为了程序可移植方面的考虑,例如:

/* / */ 0 * /* */1在不允许嵌套的注释内表示0*1;

而在允许嵌套的注释内表示1;

未解决这个问题,C99之后,还允许使用 // 的形式的注释,称为单行注释。使 // 之后字符直到换行符之前,全部注释掉。

注释使用三原则:

1 字符串里面的注释符不起注释作用;
例如:printf( "Hello /* World */!");
会输出 Hello /* World */!而不只是Hello !
2 注释符里的双引号不起标识字符串的作用;
例如:/* "*/" */ 这个注释是错误的
3 如果情况混乱则从头找起。

2.2.3  标识符

标识符就是变量,函数,类型等的名字。他们由大小写字母,数字,下划线组成,但不能以数字开头。C语言是一种大小写敏感的语言,因此,ABC ABc aBC abc 是四种不同的标识符。标识符的长度没有限制,但是标准允许编译器忽略31个字符以后的字符。

注意C语言中的关键字是被保留的,他们不能作为标识符使用。

那么什么叫关键字呢?所谓关键字就是已被 C语言编辑工具本身使用, 不能作其它用途使用的字。(C8932个关键字;C99,增加5个,37个关键字;C11,增加7个,44个关键字)

最初的32个关键字:

auto break case char const continue default

do double else enumextern float for

goto if int long register return short

signed sizeof static struct switch typedef

union unsigned void volatile while














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值