关于自增、自减运算符的笔记
来源:互联网 发布:getting windows ready 编辑:程序博客网 时间:2024/06/08 04:37
一直以来,我对于自增、自减运算符都停留在一个很初级的水平:
即单纯的将变量+1或-1,根据运算符前置或后置的情况,来决定返回进行运算前的值还是运算后的值
但是!直到最近经常接触左值(l-value),右值(r-value)概念,然后又看到一篇文章提到过关于自增运算符的知识,于是就学习学习,今天来做点笔记。
首先,是关于左值、右值的概念,这些概念认真讲可以讲很多,所以就简单说一下吧:
左值(location-value): 左值可以出现在赋值运算符的左侧,也可以出现在右侧,一般可读可写
右值(read-value):右值只可以出现在赋值运算符的右侧,只可读,不可写
现在,我们来聊一聊自增运算符以a++、++a为例:
a++,是先取出a的一份拷贝,然后增加a的值,最后返回之前的拷贝,所以返回值类型是右值。
++a,是先增加a的值,再返回a的引用,所以返回值类型是左值。
所以,(++a)=a++可以编译,++++a可以编译,a+++不可以编译,++a++也不可以(因为++运算符结合方向是自右向左)
PS:这里顺便提一下重载++运算符,当我们为一个类重载++运算符的时候,我们并不能从参数上区分前置自增和后置自增(当然从返回值类型可以区分),这个时候,c++做出了规定:
C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数
举例说明:
class Int{ public: Int & operator++(); //前缀 Int & operator--(); const Int operator++(int); //后缀 const Int operator--(int);}
资料来源:
http://blog.xieyc.com/prefix-and-suffix-forms-of-the-increment-and-decrement-operators/
http://www.cnblogs.com/maxwellp/archive/2012/02/11/2346844.html
- 关于自增、自减运算符的笔记
- 关于自增自减:C、C++自增自减运算符的研究
- 关于自增自减运算符的一些问题
- 关于自增自减运算符的一些问题
- 关于数学运算符的自加和自减
- 关于自增符的运算
- 关于自增自减运算符在C++中
- 自增、自减运算符的运算
- 关于自增运算符
- 关于自增运算符
- 关于c语言中自增自减运算符的一点思考
- 关于JAVA中单目运算符自增(++)自减(--)的分析
- 关于java中自增、自减运算符与C的不同。
- 自增(i++)、自减(i--)运算符的学习笔记
- Java 自增“--”和自减“--”运算符的用法
- 自增、自减运算符的重载
- 对自增和自减运算符的提醒
- 自增、自减运算符的前缀和后缀
- CI xlsx 文件类型错误, CI上传文件 xlsx 修改类型mimes
- deeplearning4j之卷积神经网络实现
- Python 算法
- java-基本语法
- java多态,如何理解父类引用指向子类对象
- 关于自增、自减运算符的笔记
- 关于WebHDFS与HttpFS
- windows 下杀死进程
- 3.Django-MTV
- (干货)自定义 type="range" type="radio" select的样式
- Centos 6.x Hadoop集群环境搭建
- android 播放视频常见问题
- L2-022. 重排链表
- Bootstrap框架,在使用栅格布局的时候,在父标签中添加row类,发现引起网页出现横向滚动条的问题