Pre / Post 结构指针上的递增运算符

Pre / Post increment operator on structure pointer

我是 C 的新手
没明白这里发生了什么

struct person {
    int age;
};

main ()
{
    struct person p , *ptr;
    ptr = &p;

  printf ("%d \n" , ++ptr->age );
  printf("%d" , ptr++->age);

  return 0;
}

How Both printf statements prints 1 ?

这个表达式

++ptr->count;

相当于

++( ptr->count );

所以它增加了ptr指向的结构的数据成员count

表达式 ++ptr->count 中的

运算符 -> 是 postfix 运算符,其优先级高于任何一元运算符,包括预递增运算符 ++.

在这个表达式中

ptr++->count;

有两个 post固定运算符:post-增量运算符 ++ 和运算符 ->。它们从左到右进行评估。 post-自增运算符++的值是其操作数自增前的值。因此,此表达式 returns 由 ptr 指向的结构的数据成员 count 在其递增之前的值。指针本身递增。

根据 C 标准(6.5.2.4 后缀递增和递减运算符)

2 The result of the postfix ++ operator is the value of the operand. As a side effect, the value of the operand object is incremented (that is, the value 1 of the appropriate type is added to it)....