C 如何解释运算符的结合性?

C 如何解释运算符的结合性?,c,operators,operator-precedence,associativity,C,Operators,Operator Precedence,Associativity,括号和指针符号具有相同的优先级,它们从左到右进行处理。为什么下面的代码尝试从skb获取成员nfct,然后进行类型转换?联想性似乎是从右向左的 (struct nf_conn *) skb->nfct 我相信你在这里遗漏的一点是 指针成员访问运算符(->)的优先级高于强制转换 详述,(借用的字眼) 运算符优先级确定在具有多个具有不同优先级的运算符的表达式中首先执行哪个运算符 当一个表达式中出现两个优先级相同的运算符时,将使用(或起作用) 这里不是括号而是强制转换,它的优先级低于->与您

括号和指针符号具有相同的优先级,它们从左到右进行处理。为什么下面的代码尝试从
skb
获取成员
nfct
,然后进行类型转换?联想性似乎是从右向左的

(struct nf_conn *) skb->nfct 

我相信你在这里遗漏的一点是

指针成员访问运算符(
->
)的优先级高于强制转换

详述,(借用的字眼)

  • 运算符优先级确定在具有多个具有不同优先级的运算符的表达式中首先执行哪个运算符
  • 当一个表达式中出现两个优先级相同的运算符时,将使用(或起作用)
这里不是括号而是强制转换,它的优先级低于
->
与您的问题没有严格的关系,因为这是强制转换而不是插入括号的表达式;但“括号和指针符号具有相同的优先级”是不正确的。圆括号表达式是一个主表达式,它的优先级比后缀运算符
->
高一步。