趣味小知识:return i++

昨夜偶打代码,忽然想到个小问题:

如果在函数中,返回语句出现 return value++;会是怎样返回呢?

会不会是与 return i;  i++; 相同呢?还是i++; return i; 呢?

为了探究这个问题,我打了个小代码以试试看:

  1. #include <iostream>
  2. using namespace std;
  3. int i = 100;
  4. int foo() {
  5. return i++;
  6. }
  7. int main(){
  8. cout << foo() << endl ; // 输出100
  9. cout << i << endl ; // 输出101
  10. }
所以由代码第9行可知,函数有实现 i 的自增操作, 但由第8行可知,函数返回值为 i 自增前的数值,

也即返回 i 的值是在 i 自增之前,但这又说不通,因为函数返回值之后便退出函数,不应该执行其

后的操作,所以既不是(先return i; 再 i++; ),也不是(先 i++; 再return i; ),这时候唯一有可能的

解释便是引入中间值的概念,即是 中间值 = i++; 再return 中间值,这便可满足返回值数值大小与 i 完

成自增加操作的解释,由汇编代码也可验证此结论!!(在此就不做加深拓展,有兴趣可自行探索)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值