1. a.b
2. a.b()
3. *a.b()
不只限于 C/C++,成员运算符(小点)在绝大多数编程语言中具有最高的优先级。因为以下写法都很常见用:-a.num、&a.field、*a.num + 3。
函数调用的优先级也很高,通常仅次于小点。否则 - fun() 这种写法会有问题。
再之后是一系列单目运算符,双目运算符优先级通常比单目运算符低。
运算符的设计是为了便于肉眼 Parser 代码,通常看上去最符合直觉的顺序都是对的。但有时候一堆加减乘除位运算放一起,老实加括弧吧。
1. a.b
2. a.b()
3. *a.b()
不只限于 C/C++,成员运算符(小点)在绝大多数编程语言中具有最高的优先级。因为以下写法都很常见用:-a.num、&a.field、*a.num + 3。
函数调用的优先级也很高,通常仅次于小点。否则 - fun() 这种写法会有问题。
再之后是一系列单目运算符,双目运算符优先级通常比单目运算符低。
运算符的设计是为了便于肉眼 Parser 代码,通常看上去最符合直觉的顺序都是对的。但有时候一堆加减乘除位运算放一起,老实加括弧吧。