自增自减运算符用作前缀与用作后缀时略有不同。
i++和++i的区别:
1、i++ 返回原来的值,++i 返回加1后的值。( a = i++ 是先给 a 赋值,然后 i 再自增;a = ++i是 i 先自增,然后给 a 赋值。)
#include<iostream>
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<iostream>
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可以作为左值:
#include<iostream>
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++ 的后面一步是自增,不是左值。