自增自减运算符i++与++i的区别

自增自减运算符用作前缀与用作后缀时略有不同。

i++和++i的区别:

1、i++ 返回原来的值,++i 返回加1后的值。( a = i++ 是先给 a 赋值,然后 i 再自增;a = ++i是 i 先自增,然后给 a 赋值。)

#include
int main() {
	int num = 5;
	int a = num++; // num自增
	std::cout << "a的取值为:" << a << std::endl; // a的取值为:5
	std::cout << "num的取值为:" << num << std::endl; // num的取值为:6

}
#include
int main() {
	int num = 5;
	int a = ++num; // num自增
	std::cout << "a的取值为:" << a << std::endl; // a的取值为:6
	std::cout << "num的取值为:" << num << std::endl; // num的取值为:6

}

2、i++ 不能作为左值,而++i可以。
i++不能作为左值:

自增自减运算符i++与++i的区别_第1张图片

 

++i可以作为左值:

#include
int main() {
	int num = 5;
	++num = 1; // num自增
	std::cout << "num的取值为:" << num << std::endl; // num的取值为:1

}

        如果有表达式 a = i++ ;它等价于 a = i;i = i + 1;如果有表达式 a = ++i;它等价于i = i + 1;a = i;
        ++i 和 i++ 都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,即++i是一个左值(可被寻址的值);i++ 的后面一步是自增,不是左值。

你可能感兴趣的:(C++,算法,数据结构,c++)