运算符:++、--前置和后置的区别

关于++和--这两个运算符相信大家都不会陌生,++表示自加一,--表示自减一,但是大家比较容易忽略的是运算符前置和后置的区别:

后置:

var i=8;
var a=i--;

console.log(i);//输出7
console.log(a);//输出8

前置:

var j=8;
var b=--j;


console.log(j);//输出7
console.log(b);//输出7

如果加上括号呢?我们再来看看下面的例子:

function out(x){
 var temp=2;
 function inside(y){
  document.write(x+y+(temp--));
 }
 inside(5)
}
out(3)

最后输出的结果是10;

我们来分析上面的代码,首调用out函数,然后执行inside函数 x+y的结果是8,到了(temp--);这里是先返回了2,然后再执行自减,所以最后结果是10。

最后我们来总结一下:

1.当++、--运算符前置的时候,返回自加/自减后的值

2.当++、--运算符后置的时候,返回自加/自减前的值

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是重载运算符++和--的Complex类的实现代码: ```c++ #include <iostream> using namespace std; class Complex { private: double real, imag; public: Complex(double r = 0, double i = 0) : real(r), imag(i) {} Complex& operator++(); // 前置++ Complex operator++(int); // 后置++ Complex& operator--(); // 前置-- Complex operator--(int); // 后置-- void show() const { cout << "(" << real << ", " << imag << ")" << endl; } }; Complex& Complex::operator++() { real++; return *this; } Complex Complex::operator++(int) { Complex temp(*this); real++; return temp; } Complex& Complex::operator--() { real--; return *this; } Complex Complex::operator--(int) { Complex temp(*this); real--; return temp; } int main() { Complex a(1, 2); (++a).show(); // 输出:(2, 2) a.show(); // 输出:(2, 2) (a++).show(); // 输出:(2, 2) a.show(); // 输出:(3, 2) (--a).show(); // 输出:(2, 2) a.show(); // 输出:(2, 2) (a--).show(); // 输出:(2, 2) a.show(); // 输出:(1, 2) (a--).show(); // 输出:(1, 2) a.show(); // 输出:(0, 2) return 0; } ``` 在上面的代码中,我们为Complex类重载了运算符++和--,包括前置++后置++前置--和后置--。对于前置++前置--,我们直接修改实部real的值,并返回*this的引用;对于后置++后置--,我们先用*this的值初始化一个临时对象temp,然后再修改实部real的值,并返回这个临时对象temp,从而实现后置++后置--。在主程序中,我们对Complex对象a进行了多次++和--运算,并输出了运算结果,验证了运算符的正确性。注意,由于后置++后置--返回的是临时对象,因此如果直接调用a--.show(),则不能正确输出a--的结果,必须使用(a--).show()的形式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值