++和--前后位置不同的区别

本文解析了编程中变量自增(++)和自减(--)运算符的工作原理及应用,通过具体示例说明了它们在单独运算与综合运算场景下的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单独运算的时候,就是表示变量加一或者减一。
综合运算的时候,b=a++,把a的值先赋给b,然后a自己加一
b=–a,a先自己减一,然后减过的值赋给b
例如:
x = 10;
y = (x++)+(++x)+(x*10);
1、10,x变成11
2、10+12,x变成12
3、10+12+120
结果x = 12,y = 142.

### C/C++中前缀后缀自减运算符的区别及与自增运算符的比较 在C/C++中,`--val`(前缀自减)`val--`(后缀自减)的行为类似于`++val`(前缀自增)`val++`(后缀自增)。两者的主要区别在于操作数返回值的时间点。 #### 前缀自减 (`--val`) 当使用前缀形式时,表达式的值是在变量被减少之前计算出来的。这意味着,在执行任何其他操作之前,变量会立即减少1,并且该表达式的值就是减少后的值[^1]。 ```cpp int a = 5; int b = --a; // 先将a减少到4,然后赋值给b // 结果:a=4, b=4 ``` #### 后缀自减 (`val--`) 对于后缀版本而言,原始值会被保留并作为整个表达式的值参与后续计算;只有等到当前语句结束之后才会真正去修改这个变量本身的内容——即先利用旧数值完成相应动作后再做实际变更处理[^2]。 ```cpp int c = 5; int d = c--; // 将c原来的值(5)赋给d,然后再把c减少至4 // 结果:c=4, d=5 ``` 这种机制同样适用于自增运算符(`++`)的情况: - **前缀自增** `++val`: 变量先增加再使用新值; - **后缀自增** `val++`: 使用原值后再让变量增值。 因此可以看出无论是哪种类型的操作符都遵循着这样一个原则—通过调整其所在位置来决定何时应用变化效果于目标实体之上从而影响最终结果呈现方式的不同之处而已[^3]. 以下是展示这些概念的一个简单例子: ```cpp #include <iostream> using namespace std; class Integer { public: explicit Integer(int value): m_value(value){} // 前缀++ Integer& operator++() { ++m_value; return *this; } // 后缀++, 注意额外的dummy参数 'int' Integer operator++(int){ Integer temp(*this); ++(*this); // 调用prefix version return temp; } friend ostream& operator<<(ostream&, const Integer&); private: int m_value; }; ostream& operator<<(ostream& os, const Integer& obj){ os << obj.m_value; return os; } int main(){ Integer i(7), j(i); cout << "i=" << (++i) << ",j=" << j << endl;// 输出:i=8,j=7 cout << "i=" << (i++) << ",j=" << j << endl;// 输出:i=8,j=8 return 0; } ``` 上述程序定义了一个简单的整型封装类`Integer`, 并实现了它的前后缀递增方法。可以看到调用不同的增量函数会影响输出的结果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值