【C】——词法分析器中的“贪心法”

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

a---b这个表达式你要怎么解释?

a-- - b?还是a- --b?

这个要根据编译器的词法分析器来确定了;

写个程序如下:

1 #include <stdio.h>
2 void text(int a)
3 {
4     int a=10;
5     int b=1;
6     printf("%d\t a:%d\n",a---b,a);
7 }    

vc6.0测试结果为  9  a:10

gcc测试结果为  9  a:9

不同编译器采用的词法分析器不同吧!为了增强程序的可移植性,建议在符号的两边用空格隔开,这应该是一个良好的编程风格吧!

posted @ 2012-12-30 11:27  net小伙  阅读(238)  评论(0编辑  收藏  举报