i++与++i

	
	int i = 3 ;
	a = i++;
	/**
	* a = 3
	*/


	int i = 3;
	a = ++i;
	/**
	* a = 4
	*/
  • i++ 先赋值再运算,即先 a = i,后 i = i+1;
  • ++i 先运算再赋值,即先 i = i+1,后 a = i;
  • 当不需要赋值时两者没有区别。
### I++ --i 的操作区别 在 C/C++ 中,`i++` 和 `--i` 是两种不同的运算符,分别表示后置递增和前置递减。它们的主要区别在于运算符执行的时机以及返回值的不同。 #### 后置递增 (`i++`) - **定义**:后置递增运算符会在表达式计算完成后,再将变量的值增加 1。 - **行为**:在表达式中使用时,返回的是递增前的值。 - **示例代码**: ```cpp int i = 5; int j = i++; // j 的值为 5,因为 i++ 返回的是递增前的值 // 此时 i 的值为 6 ``` #### 前置递减 (`--i`) - **定义**:前置递减运算符会在表达式计算之前,先将变量的值减少 1。 - **行为**:在表达式中使用时,返回的是递减后的值。 - **示例代码**: ```cpp int i = 5; int j = --i; // j 的值为 4,因为 --i 返回的是递减后的值 // 此时 i 的值为 4 ``` #### 关键区别总结 | 特性 | 后置递增 (`i++`) | 前置递减 (`--i`) | |---------------|-----------------------------------|----------------------------------| | **执行时机** | 表达式计算完成后递增 | 表达式计算前递减 | | **返回值** | 返回递增前的值 | 返回递减后的值 | | **性能差异** | 可能稍微慢一些(需要保存旧值)[^2] | 通常更快(直接修改并返回新值)[^2] | #### 示例程序分析 以下是一个综合了 `i++` 和 `--i` 的程序,用于展示它们的行为差异: ```cpp #include <iostream> using namespace std; int main() { int A = 10, B = 20, C = 0; C = A++ + ++B * 10 + B++; // 使用前后递增运算符 cout << "A: " << A << ", B: " << B << ", C: " << C << endl; int i = 3; if (i == ++i) { // 这里的行为可能依赖于编译器实现 cout << "(i == ++i) = true" << endl; } cout << "i after (i == ++i): " << i << endl; if (i++ == i++) { // 类似地,这里的表达式行为也依赖于编译器 cout << "(i++ == i++) = true" << endl; } cout << "i after (i++ == i++): " << i << endl; return 0; } ``` - 在上述代码中,`C = A++ + ++B * 10 + B++` 的结果取决于运算符优先级和结合性。具体计算顺序如下: - `++B` 先递增 B 的值,然后参计算。 - `B++` 参计算后,再递增 B 的值。 - `A++` 参计算后,再递增 A 的值。 - 输出结果为:`A: 11, B: 22, C: 231`[^1]。 #### 注意事项 - 在复杂的表达式中混合使用前置和后置运算符可能导致不可预测的行为,尤其是在多线程环境中或不同编译器之间。 - 推荐尽量避免在单个表达式中多次修改同一个变量,以提高代码的可读性和可维护性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值