C语言中*p++与*++p还有++*p有什么区别?
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
展开全部
我只想说一点。运算符的实现其实是函数。你如果能将运算符看成是函数名就行了。前置++的函数实现是将变量加1后返回,而后置++的函数实现用到一个临时变量,比如是a++实现是{temp = a;a = a+1; return temp.}有了这个观念分析上述问题就很简单了。希望对你有帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键就是运算符的优先性和结合性以及表达式的结果是左值还是右值的问题, 把目标运算符 *, 前缀增量运算符 ++, 后缀增量运算符 ++, 以及各自对应的表达式结果是左值还是右值, 这些问题都搞清楚, 就没什么难以分别了.
我不多说, 只强调几点: 增量运算符(无论前缀还是后缀)的操作数必须是左值(你可以理解为是一个变量), 但表达式结果的取法按前缀或后缀是有分别的; 目标运算符 * 的操作数不必是左值(但可以是左值) , 而对应表达式的结果却一定是一个左值(在内存中是占有存储位置的).
我不多说, 只强调几点: 增量运算符(无论前缀还是后缀)的操作数必须是左值(你可以理解为是一个变量), 但表达式结果的取法按前缀或后缀是有分别的; 目标运算符 * 的操作数不必是左值(但可以是左值) , 而对应表达式的结果却一定是一个左值(在内存中是占有存储位置的).
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x = *p++ 就是 x = *p; p++;
x = *++p 就是 ++p; x = *p;
++*p,就等于 ++(*p)
x = *++p 就是 ++p; x = *p;
++*p,就等于 ++(*p)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询