C语言选择题———关于++和->和 . 的优先级以及结合性

设有以下语句,下列表达式中值为6的是()。
struct b
{
int x;
struct b *next;
};
struct b a[3]={5, &a[1],7,&a[2],9,’\0’},*p;
p=&a[0];

  A (*p).x++ 
  B p++->x 
  C ++p->x 
  D p->x++ 

答案是C。

a选项 ++后缀是左结合,所以先(*p).x 然后表达式的值就是5,运行完这个语句后p->x的值加一。

b选项 ++后缀是左结合,所以p++先执行,p++表达式的值为p,所以p++->x是5

c选项 ++前缀是右结合,所以是 对p->x的值加1,为正确选项

d选项 ++后缀是左结合,所以先p->x, 根据++后缀的特点知:p->x++表达式的值为5,执行完毕后p->x的值加一。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值