<带你学C带你飞>E10疑惑
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) 负号和减号不都是 "-" 么, 编程时如何区分? 四则运算符的优先级肯定高于逻辑运算符,所以b-c可以不加括号,小甲鱼习惯加括号,标注的次序也是加完括号后的"理想"次序。
后一个问题,负号运算符与减法运算符的优先级差别不大,而且一个是双目运算符一个是单目运算符,也很难混淆。稍微想想很容易就理清楚其中的逻辑。如果你是问编译时如何区分它们。是这样,负号运算符是一个从右往左结合的运算符,而减法运算符是一个从左往右结合的运算符。举个例子,3-2,从左往右编译代码,遇到“-”时,将其合法理解为减法就没有然后了。但是如果一个单独的-2,从左到右编译到“-”时显然将其理解为减法是不合法的,需要再看一眼后面的2,然后才知道应该将2与“-”结合为“-2”。总结就是,这两者由于是同一个符号,不能用优先级来反过来去区分它们,而是从左往右读取代码时直接从语法逻辑上区分开来
页:
[1]