我是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?
答案 0 :(得分:2)
此表达式
++ptr->count;
相当于
++( ptr->count );
因此它会增加count
指向的结构的数据成员ptr
。
->
中的运算符++ptr->count
是一个后缀运算符,其优先级高于任何一元运算符,包括预增量运算符++
。
在此表达式中
ptr++->count;
有两个后缀运算符:后增量运算符++
和运算符->
。它们从左到右进行评估。后增量运算符++的值是递增前其操作数的值。因此,此表达式返回count
在递增之前指向的结构的数据成员ptr
的值。指针本身会递增。
根据C标准(6.5.2.4后缀增量和减量运算符)
2 postfix ++运算符的结果是操作数的值。 作为副作用,操作数对象的值递增(即 是,相应类型的值1被添加到它)....