编译器在进行词法分析时,总是从左到右,尽可能的获取词法单位,即使最终可能导致错误的程序。
例如:
b--x;
词法分析的结果为b,--,x,这是一个无效的语句。虽然分解为b,-,-,x能得到合法的结果,但这不是编译器的行为。
这种处理策略称为“贪心法”。
好的编程风格之一,就是合理的使用空白分隔符号,不仅是为了代码的可读性,还可以避免潜在的错误。
比如:
y = x/*p /* p指向除数 */;
本意是x除以p指向的值,结果赋值给y。然而,/*被编译器认为是注释的开始,直到*/出现为止,于是代码实际等于:
y = x;
合理的使用空白或括号,就可以避免这种问题:
y = x / *p;
或
y = x/(*p);