C陷阱与缺陷1

本文深入解析词法分析过程,对比了不同运算符(=与==,&与&&,|与||)的使用场景,阐述了'贪心法'在词法分析中的应用,解释了整型常量的不同进制表示,以及字符与字符串的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.       词法分析

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

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’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值