您的位置:首页 > 其它

(读书笔记)C缺陷与陷阱 第一、二章

2014-01-09 19:00 316 查看
看完一、二章,记些笔记,作为参考。。

1(1.3):词法分析中的"贪心法"--即每一个符号应该包含尽可能多的字符

譬如a---b 等同于 a -- -b,而不是a- --b;

譬如y=x/*p,编译器会把/*当成是一段注释开始,而不是看成y=x/(*p);

当然可以写成y=x/ *p,即中间加空格,无疑,加括号更加能清楚的表达本来的意图。

在实际编程中,要防止这种可能存在的准二义性问题,要明确表达意图。

2(1.4):整型常量若以0开头,会被视为八进制数。故10和010含义截然不同,注意之。

3(2.2):运算符优先级问题:

优先级最高的是:数组下标[]、函数调用操作符()、各结构成员选择操作符->

接下来是单目运算符:! ~ ++ -- - (type) * & sizeof

注意:单目运算符是自右向左结合的,故*p++等同于*(p++),而非*p(++)

接下来是双目运算符:算术>移位>关系运算符>逻辑运算符

注:(1)6个关系运算符优先级并不同:==,!=比其他的低,故a<b==c<d等同于(a<b)==(c<d);

(2)逻辑运算符之间的优先级都不同:位运算符>顺序运算符, 与(&,&&)>或(|,||)。

接下来是条件运算符,再是赋值。

注:赋值运算符的结合方式是从右到左的。。

即:a=b=0;等同于b=0;a=b;

4(2.6):悬挂else问题:else始终与同一对括号内最近的未匹配的if结合
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: