《C陷阱和缺陷》 - 1.词法陷阱
Q1:token
A:
程序的一个基本组成单元,作用相当于一个句子中的单词。
Q2:词法分析器
A:
编译器中负责将程序分解为一个个符号的部分。
C语言采用:"贪心法",即每一个符号应该包含尽可能多的字符。
1.
a---b a-- -b
a- --b
2.
y = x/*p /*被理解为注释的开始
y = x / *p y = x/(*p)
Q3: = 不同于 ==
A:
= 赋值运算 a = b = c
== 比较运算
while(c = ' ' || c == ''|| c == '\n')
c = getc(f)
会被解释为(逻辑运算 || 优先级高于 = )
' ' || c == ''|| c == '\n'
即一直满足条件
Q4: & 和 | 不同于 &&和||
A:
& 和 | 按位运算
&& 和 || 逻辑运算
Q5:整型常量0开头
A:
如果一个整形常量的第一个字符是数字0,那么该字符将被视作八进制数。
故,10和010的含义截然不同。
有可能在上下文对齐的时候,无意间携写成了八进制。
046 ,"Left - handed widget "
125 , "Right - handed widget"
Q:字符与字符串,单引号和双引号
A:
单引号引起一个字符,相当于代表一个整数
双引号引起的字符串,相当于一个指向无名数组起始字符的指针,包含数组 + '\0'
"yes" 'y' 'e' 's' '\0'
'yes' 在VC和 GCC中,'s'

浙公网安备 33010602011771号