C陷阱与缺陷1

一.       词法分析

(将程序分解成符号的过程)

P.S:程序中的单个字符孤立起来没有任何意义,只要结合上下文才有意义。

1.=不同于==

=:赋值运算符

==:关系运算符

注意:不要把赋值运算符用成了关系运算符;也不要把关系运算符用成了赋值运算符(当确实需要对变量赋值并检查该变量的新值是否为0时,最好的处理方法是—显式地进行比较,如if((x=y)!=0)或将常量放在关系运算符的左侧)。

2.&和|不同于&&和||

&和|表示按位与或非的运算,操作结果为任意数值。

&&和||表示逻辑操作,操作结果只能为0或1;且当左侧的表达式能决定结果时,就不再进行右侧表达式的计算(短路运算的性质)。

3.词法分析中的“贪心法”

每一个符号应该包含尽可能多的字符

如:a---b,应翻译为(a--)-b, y=x/*p应翻译为y=x/(*p)

4.整型常量

若一个整型常量(或字符常量)的第一个字符是0,则该常量将被视为八进制。

如:char c=040,printf(“%d\n”, c),则输出结果为32.

5.字符与字符串

字符:单引号引起的,实际代表一个整数(ASCII码);

字符串:双引号引起的,代表一个指向无名数组起始字符的指针,该数组的初始化值为双引号之间的字符及一个额外的二进制值为零的字符’\0’。

猜你喜欢

转载自blog.csdn.net/xiaobaixiongxiong/article/details/82963845