请解释一下i = i ++有什么区别;和我++请查看下面的代码,让我了解在出现第一种情况下它是如何工作的?

问题描述

分别在代码输出中查看以下两个条件:

#include <iostream>
using namespace std;

int main()
{
    int i=1;

   i=i++;  // first condition 
    i++; //2nd condition 

   cout << i << endl; //it will print 2 in second condition **but why print 1 in first condition?**
 
    return 0;
}

解决方法

i ++将使i递增,但将返回原始值。 所以,

int i=0;
int x = i++; // x = 0,i = 1

如果您想返回 new 值,请改用++ i。

int i=0;
int x = ++i; // x=1,i=1
,

语句i++在执行后 后增加i。 与++i在{strong>之前执行之前增加i的情况相反。 这样的代码

int i=1;
i=i++;

这样做:

  1. (第1行)用值1初始化变量i
  2. (第2行)将i(1)的当前值插入变量i(尚未更改)。
  3. (第2行)将i从1增加到2。

代码

int i=1;
i++;

这样做:

  1. (第1行)用值1初始化变量i
  2. (第2行)将i从1增加到2。

在这些示例中,区别更加明显:

示例a

int i=1;
i=10+(i++);
std::cout << i << std::endl;

这样做:

  1. (第1行)用值1初始化变量i
  2. (第2行)计算10的结果加上i(1)的当前值(结果11)。
  3. (第2行)将上一次计算的结果11插入i
  4. (第2行)将i从11增加到12。
  5. (第3行)打印12。

示例b

int i=1;
int j = i++
i=10+j;
std::cout << i << std::endl;

这样做:

  1. (第1行)用值1初始化变量i
  2. (第2行)将i(= 1)的当前值插入j
  3. (第2行)将i从1增加到2
  4. (第3行)计算10的结果加上j(= 1)的当前值(结果11)。
  5. (第3行)将上一次计算的结果11插入i
  6. (第3行)打印11

示例c

int i=1;
int j = i++
i=10+i;
std::cout << i << std::endl;

这样做:

  1. (第1行)用值1初始化变量i
  2. (第2行)将i(= 1)的当前值插入j
  3. (第2行)将i从1增加到2
  4. (第3行)计算10的结果加上i(= 2)的当前值(结果12)。
  5. (第3行)将上一次计算的结果112插入i
  6. (第3行)打印12

夏季

以下所有代码在i末尾保留相同的值:

a)

int i = 1;
i++;

b)

int i = 1;
i = i++;

c)

int i = 1;
int k = i++;