当前位置:   article > 正文

C++的递增运算符和递减运算符_++是在完整表达式后递增吗

++是在完整表达式后递增吗

创作内容不易,学习的朋友麻烦关注下博主,后面学习不迷路。有不会的问题也可以论坛咨询博主,博主也会及时回复~~

递增运算符(++)主要用于将操作数在本身的基础上面加1,而递减运算符(--),则 主要用于将操作数在本身的基础上面加减去1

比如

在这个例子当中,a的初始值为2,a++后变为3(a = a + 1),a--后变为(a = a - 1)2;

1.变式

递增(递减)都有前缀递增(递减)和后缀递增(递减),它们在表达式上面的区别是,前缀的操作符号在操作数前面,后缀的操作符号在操作数后面

它们两者在单独大多数情况可以不区分使用,因为最终效果是一致的

两者的情况是一样的,但看似简单的两者却有着比较复杂的什么时候改变值得问题,我们来看一个例子

nextnum = (y + n++) * 6;

这里最容易产生误会的点就在n++自增上,首先我们都知道副作用只能在序列点或完整表达式后尝试,而我们注意看(y + n++)属于 (y + n++) * 6的子表达式所以不是完整表达式,这就意味着n的自增只会发生在;后,而结果的确也是这样。

一般遇到这种容易尝试误解的表达式,最好的方式就是拆开。

 nextnum = (y + n++) * 6;

等于

 nextnum = (y + n) * 6;

n++;

在看这个例子

在这里例子当中,

(1 + n++) + n;其实等于1+3+3为7。n得自增只有等到(1 + n++) + n完整表达式结束才能完成

用户定义前缀函数,将值加1,然后返回结果。但是后缀版本首先复制一个副本,然后将其加1,然后将复制的副本返回。因此,前缀版本的效率比后缀要高

2.优先级问题

前缀递增,前缀递减和解除应用运算符优先级相同,结合律从右到左

double x = *++pt;

意思是pt地址先加1,在解引用

double x = ++*pt

意思是pt先解引用获得地址值,然后在该值基础上面加1

后缀递增和后缀递增得优先级相同,但比前缀运算符得优先级高,结合律从做到右

double = *pt++

意思是pt地址先加1,在解引用

这里看搁有趣的例子,这里我把char变量自加加。++ch是对应的字符串值加1,然后进行对应的字符打印。但ch + 1在计算时候,ch会被强制转换为int类型,所以最终是以int类型进行打印的


我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/524626
推荐阅读
相关标签
  

闽ICP备14008679号