摘要: int a=1,b=1;int c=a+++++b; printf("c=%d/n",c); 这段代码是无法通过编译的。 a+++++b的含义: 唯一有意义的解析方式是:a ++ + ++ b 可是,根据“大嘴法”规则,应该被分解为:a ++ ++ +b ,这个式子从语法上来讲是不正确的,它等价于:((a++)++) +b 但是,a++的结果是不能作为左值的,因此编译器不会接受a++作为后面的++运算符的操作数。这样,如果遵循了解析词法二义性问题的规则,上例的解析从语法上来说又没有意义。因此,在编程实践中,谨慎的做法就是尽量避免使用类似的结构,除非你非常清楚这些结构的含义。 阅读全文
posted @ 2014-01-06 14:13 齿轮君 阅读(748) 评论(0) 推荐(0) 编辑