汉扬编程 编程大纲 a—b是什么意思?了解C语言“贪心法则”后,秒懂

a—b是什么意思?了解C语言“贪心法则”后,秒懂

卷首语了解下C语言编译,词法分析中的“贪心法则”,有助于避免许多不必要的书写错误。

a---b是什么意思?了解C语言“贪心法则”后,秒懂

a---b是什么意思?了解C语言“贪心法则”后,秒懂

贪心法则对于本题 a—b 如何拆解成合法符号的问题,C语言有一个简单的规则,“贪心法则”:每一个符号应该包含尽可能多的字符。

也就是说,编译器将源代码,从左到右,一个字符一个字符地读入,如果加入下一个字符依旧可以构成一个合法符号,则包含该字符,直到不可以为止。

– 和 — 都是合法运算符,但 — 不是

例题分析(1) a—b 的意思是什么?

首先,a是一个合法符号,a-不是,所以第1个符号是a

其次,-是一个合法符号,–也是一个合法符号,但—不是,所以第2个符号是–

然后,-是一个合法符号,-b不是一个合法符号,所以第2个符号是-

最后,只剩下一个字符b,它是一个合法的符号

所以,a—b,依据贪心法则,得出的结果是:a — – b ,也就是 (a–) – b

(备注:合法的符号,如变量名,只能有大小写字母、数字和_下划线组成,并且不能是数字开头这里的a和b都是变量名。)

(2) y = x/*p是什么意思呢?

如(1)的分析步骤,前2个符号依次是y , =,本题重点,在x/*p上,依旧贪心法则:

首先, x是一个合法符号, x/则不是;

其次,/是一个合法符号,/*也是一个合法符号,但/*p不是一个合法符号,所以第2个符号是/*, 看到/*后,编译器将把它后续字符均当做是注释扔掉,直到看到*/为止。-_-||

此题的本意是 y = x / (*p),但因为忽略了规则,此书写错误或直接导致编译错误。

卷尾语欢迎纠错,讨论。

关注@阿迷创客,普及计算机知识,讲解C/汇编/C++/JAVA/Phyton等编程语言。

做创客,爱编程。

喜欢的给个关注/转发,需要的可以私信,送资料,每天都会抽空回复。

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/6730.html

为什么初学者在接触其它编程语言之前最好先学C语言

C语言干货(3):必备的知识——“补码”

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部