我是C的新手 没有得到这里发生的事情
struct person {
int age;
};
main ()
{
struct person p , *ptr;
ptr = &p;
printf ("%d \n" , ++ptr->age );
printf("%d" , ptr++->age);
return 0;
}
两个printf语句如何打印1?
这个表达
++ptr->count;
相当于
++( ptr->count );
所以它增加了count
指向的结构的数据成员ptr
。
表达式->
中的运算符++ptr->count
是一个后缀运算符,其优先级高于任何一元运算符,包括预增量运算符++
。
在这个表达中
ptr++->count;
有两个后缀运算符:后增量运算符++
和运算符->
。它们从左到右进行评估。后增量运算符++的值是递增前其操作数的值。因此,此表达式返回count
在递增之前指向的结构的数据成员ptr
的值。指针本身会递增。
根据C标准(6.5.2.4后缀增量和减量运算符)
2 postfix ++运算符的结果是操作数的值。作为副作用,操作数对象的值递增(即,将相应类型的值1添加到其中)....