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 阅读(291) 评论(0) 编辑 收藏 举报