大嘴法(贪心法)

来源:互联网 发布:linux dump查询 编辑:程序博客网 时间:2024/06/05 19:58

定义:每一个符号应该包含尽可能多的字符。也就是说,编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已经不再可能组成一个有意义的符号。


注意;除了字符串与字符常量,符号的中间不能嵌有空白(空白符,制表符,换行符)


例如:a---b与表达式a --  - b的含义相同,而与a - --b含义不同


例如:y= x/*p                       /*被理解为一段注释的开始,编译器将不断读入字符直到遇到*/为止

将上式重写为:

y=x/   *p或y=x/(*p)即可


练习1-3   为什么n-->0的含义是n--  >0,而不是n-  ->0?


根据贪心法可知


练习1-4  a+++++b的含义是什么?


是   a++   +    ++b

也许这不符合贪心法,但若相当于((a++)++)+b,是不合法的,,,,因为a++不能当左值






0 0
原创粉丝点击