C陷阱与缺陷 学习笔记(一)

一、“贪心法”—每个符号应该包含尽可能多的字符

     编译器从左到右一个个字符读入,如果这个字符能够组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能再组成一个符号。以此类推,知道读入的字符串不能再组成一个有意义的符号。

     应该注意的是除了字符串与字符串常量,符号中间不能有空白。例如:

if(a= =b)

这就是错误的,但是利用这个规则可以避免一些错误。

y=x/*p

这句话的本意应该是x除以p指向的值,再将商赋给y,通过中间加个空格可以修正这个错误。

y=x/ *p

当然,我认为更好的书写方式是:

y=x/(*p)

类似的还有

a=-1;
a= -1;

第一行代码意义为a=a-1;

第二行代码意义为a的值为-1;

二、引号的含义

     单引号括起的字符代表整数,双引号括起的字符代表一个指针。

printf(‘yes’)

上述是错误的,但编译器检测不到。

三、优先级问题

     任何逻辑运算符的优先级低于任何关系运算符。

     移位运算符的优先级比算术运算符要低,但是比关系运算符要高。

    

posted on 2018-08-22 20:00  Knight.Wxz  阅读(290)  评论(0编辑  收藏  举报

导航