鱼C论坛

 找回密码
 立即注册
查看: 1151|回复: 1

[已解决]<带你学C带你飞>E10疑惑

[复制链接]
发表于 2019-11-28 21:10:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1) E10第六题中 E. a = b - c || a % b && c / d , 小甲鱼的答案是写成:a = ((b – c)4 || ((a % b)1 && (c / d)2)3)5 而我认为 b - c 的优先级要优于 (a % b) && (c / d) , 请问各位鱼油怎么看?
2) 负号和减号不都是 "-" 么, 编程时如何区分?
最佳答案
2019-11-28 23:07:52
四则运算符的优先级肯定高于逻辑运算符,所以b-c可以不加括号,小甲鱼习惯加括号,标注的次序也是加完括号后的"理想"次序。
后一个问题,负号运算符与减法运算符的优先级差别不大,而且一个是双目运算符一个是单目运算符,也很难混淆。稍微想想很容易就理清楚其中的逻辑。如果你是问编译时如何区分它们。是这样,负号运算符是一个从右往左结合的运算符,而减法运算符是一个从左往右结合的运算符。举个例子,3-2,从左往右编译代码,遇到“-”时,将其合法理解为减法就没有然后了。但是如果一个单独的-2,从左到右编译到“-”时显然将其理解为减法是不合法的,需要再看一眼后面的2,然后才知道应该将2与“-”结合为“-2”。总结就是,这两者由于是同一个符号,不能用优先级来反过来去区分它们,而是从左往右读取代码时直接从语法逻辑上区分开来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-28 23:07:52 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
四则运算符的优先级肯定高于逻辑运算符,所以b-c可以不加括号,小甲鱼习惯加括号,标注的次序也是加完括号后的"理想"次序。
后一个问题,负号运算符与减法运算符的优先级差别不大,而且一个是双目运算符一个是单目运算符,也很难混淆。稍微想想很容易就理清楚其中的逻辑。如果你是问编译时如何区分它们。是这样,负号运算符是一个从右往左结合的运算符,而减法运算符是一个从左往右结合的运算符。举个例子,3-2,从左往右编译代码,遇到“-”时,将其合法理解为减法就没有然后了。但是如果一个单独的-2,从左到右编译到“-”时显然将其理解为减法是不合法的,需要再看一眼后面的2,然后才知道应该将2与“-”结合为“-2”。总结就是,这两者由于是同一个符号,不能用优先级来反过来去区分它们,而是从左往右读取代码时直接从语法逻辑上区分开来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 13:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表