C语言中如何判断多判断多个符号相连问题

 a---b;

y = x/*p        /* p指向除数*/;


这种语句如何理解?


      打个比方,当C编译器读入一个字符'/'后又跟了一个字符'*',那么编译器就必须做出判断: 他们是一个合起来的符号还是分开的符号。

C语言对这个问题的解决方案可以归纳为一个很简单的规则 :每一个符号应该包含尽可能多的字符,也就是说,编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是另一个符号的组成部分。

如果可能组成,将继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成另一个有意义的符号。这就是“贪心法”


注意:除了字符串与字符常量,符号的中间不能嵌有空白,制表符换行符


所以根据以上所说很容易判断出:

 

a---b 与表达式 (a --) - b 的含义是一样的

 

y = x/*p        /* p指向除数*/;

实际上,/*被吧编译器理解为一段注释的开始,编译器将后面的看成是注释,直至*/的出现,也就是说该语句的最后结果是吧x的值赋给y,

如果要改成本意的话,应该改成  

 y = x / *p        /* p指向除数*/;

就是在/和*中间加空格,或者

y = x/(*p)        /* p指向除数*/;

这样级更加清楚了

 

这个在C陷阱与缺陷里写的比较详细

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值