前置++i,--i与后置i++,i--的作用和差别
时间: 2023-04-03 08:03:19 浏览: 149
前置 i,--i 和后置 i,i-- 都是 C 语言中的自增和自减运算符。它们的作用是将变量 i 的值加 1 或减 1,但它们的使用方式和效果有所不同。
前置 i,--i 的作用是先将变量 i 的值减 1,然后再使用这个新值进行计算或赋值操作。例如,--i 表示先将 i 减 1,然后再使用减 1 后的值进行计算或赋值。
后置 i,i-- 的作用是先使用变量 i 的原始值进行计算或赋值操作,然后再将 i 的值减 1。例如,i-- 表示先使用 i 的原始值进行计算或赋值,然后再将 i 减 1。
它们的差别在于它们的执行顺序和返回值。前置 i,--i 的执行顺序是先减 1,再使用新值,返回的是减 1 后的值;后置 i,i-- 的执行顺序是先使用原始值,再减 1,返回的是原始值。
总之,前置 i,--i 和后置 i,i-- 的作用都是将变量 i 的值加 1 或减 1,但它们的使用方式和效果有所不同。
相关问题
c++前置++和后置++的区别
在计算机编程中,C语言中的前置和后置运算符都是用来对变量进行增减操作的。它们的主要区别在于它们在对变量进行操作时的顺序不同。
前置操作符是在变量被使用之前对变量进行增减操作,然后再使用变量的新值。它的语法是在变量名前面加上运算符,例如++i或--i。这意味着变量i的值会先被增减,然后再被使用。
而后置操作符则是在变量被使用之后再对变量进行增减操作,它的语法是在变量名后面加上运算符,例如i++或i--。这意味着变量i的值会先被使用,然后再被增减。
这两种操作符的区别主要在于它们对变量值的使用顺序不同,这在某些情况下可能会导致结果不同。例如,在循环中使用这两种操作符时,循环内部的代码执行顺序会有所不同,可能会导致循环的结果不同。
总的来说,前置操作符是先对变量进行增减再使用,后置操作符是先使用变量再进行增减,而这一点在编程中需要格外注意,避免产生错误的结果。
为复数类Complex重载运算符++和--,实现自己实部+1和-1。 1 要求实现前置++和后置++,前置--,后置-- 2 要求两个--运算可以连续调用成员函数,即主程序中(a--).show(); 能够正确显示a--的结果
下面是重载运算符++和--的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()的形式。