书上关于*(p++)表达式的几种变形形式的思考题
代码:
int main()
{
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int *p = &a[3];
cout << "*p++ = " << *p++ << endl;
//因为++的优先级与*相等,但由于*和++运算符都是右结合性(从右向左),所以该表达式相当于*(p++),先返回p给*读取a[3]的值,p再自增,指向a[4]
cout << "*(++p) = " << *(++p) << endl;
//p先自增,指向a[5],再返回给*,输出a[5]的值6
cout << "*++p = " << *++p << endl;
//该表达式与上一行表达式一样,但是由于上面p已经指向a[5],所以这行p指向a[6],输出7
cout << "(*p)++ = " << (*p)++ << endl;
//先读取a[6]的值返回给<<输出7,a[6]的值再自增,变成8
cout << "++(*p)= " << ++(*p) << endl;
//先读取a[7]的值8返回给++,a[7]变成9,再输出9 //更正,应该是先读取a[6]的值8返回给++,a[6]变成9,再输出9
system("pause");
}
----------------------------------------------------------------------------------------------------
输出结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)