运算符++的前缀、后缀和&的记录

本文详细解析了C语言中指针与自增运算符的使用规则,包括前缀与后缀自增的不同行为及其对指针的影响。通过具体实例展示了不同组合下变量的变化过程,帮助读者深入理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现有代码如下:

在C语言中,*的优先级和前缀++是属于一个(结合方向为从右向左),比后缀的++以及–的优先级高(结合方向为从左向右)~

int a[5] = {1011121314};
int *p, *q, b;
p = a;

1.后缀++

p = a;
q = P++;

结果为:p指向a[1], q仍然指向a[0]后缀返回的是自增前的值。
2.前缀++

p = a;
q = ++p;

结果为:p指向a[1], q也指向a[1]前缀返回的是自增后的值。

3.*p++

p = a;
b = *p++;

p指向a[1], b的值为自增前的值即是a[0]即是10.

4. *(p++)

p = a;
b = *(p++);

结果同3,*和++的运算顺序为从右向左

5.*++p

p = a;
p = *++p.

p指向a[1],++p指向自增后的值,即p为a[1]的值,11。

6.*(++p)

p = a;
b = *(++p);

结果同5
7.++(*p)

p = a;
b = ++(*p);

p指向a[1], 只要有++它肯定就会变。b的值为a[0]加1后的值,因为是前缀,返回自增后的值。

8.++*p

p = a;
b = ++*p;

结果同7

总结一下原则:
前缀, 值为变化后,后缀, 值为变化前。

在C++中,建议除非必须,否则不使用后置版本的递增递减运算符

其原因是前置版本的递增运算符避免了不必要的工作,把加1后的值直接返
回改变了运算对象。与之相比,后置版本需要先存储自增前的值,以便返回未修改的值。这是一种浪费。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值