作者zerodevil (冰心无情)
看板C_and_CPP
标题Re: [问题] 我想请问结合律
时间Tue Sep 9 02:27:06 2008
※ 引述《king19880326 (OK的啦~我都可以接受)》之铭言:
: → king19880326:那左结合跟右结合呢?? 又是什麽样的运算子有这种特性 09/09 01:15
: → king19880326:?? 感谢感谢 09/09 01:15
左结合和右结合是说 A op B op C 这样的式子要先算左半边还是右半边
例如说 a-b-c 是 (a-b)-c, 不是 a-(b-c) 这样叫左结合
右结合相反, a=b=c 是 a=(b=c)
c++里面有assignment的都是右结合 ex: = += -= *= ...etc
剩下的binary operator好像都是左结合 (不太确定..有漏掉的请补充orz)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.156.17
※ 编辑: zerodevil 来自: 122.116.156.17 (09/09 02:27)
1F:推 king19880326:只有二元运算子有左结合又结合吗?? 09/09 11:33
2F:→ king19880326:expr1 ? expr2 : expr3 这种呢?? 09/09 11:34
3F:推 LPH66:上面这种可以利用类似括号的技巧来配对 09/09 20:08
4F:→ LPH66:不过我记得 a?b:c?d:e 好像是 a?b:(c?d:e) 09/09 20:09
5F:→ LPH66:查了一下 ?:是右结合 所以是楼上写的没错 09/09 20:10
6F:→ LPH66:另外摆在前面的单元运算子都是右结合 例如**ptr是*(*ptr) 09/09 20:11
7F:→ LPH66:(这种东西也没有左结合的道理嘛XD) 09/09 20:12
8F:推 king19880326:该是两个都成立的情况之下, 选哪一种作为解释 09/10 02:15
9F:→ king19880326:比如说a+b+c可以看成(a+b)+c或a+(b+c), 所以选定一个 09/10 02:16
10F:→ king19880326:又a=b=c可以看成(a=b)=c或是a=(b=c), 所以选左边 09/10 02:17
11F:→ king19880326:而**p不可能看成(**)p[未定义],所以只能看成*(*p) 09/10 02:18
12F:→ king19880326:不过如果拿来解释a++++,++++a,++a++又怪怪的,请强者 09/10 02:19
13F:→ king19880326:补充<(__)> 09/10 02:19