问题描述
#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初始化变量
i
。 - (第2行)将
i
(1)的当前值插入变量i
(尚未更改)。 - (第2行)将
i
从1增加到2。
代码
int i=1;
i++;
这样做:
- (第1行)用值1初始化变量
i
。 - (第2行)将
i
从1增加到2。
在这些示例中,区别更加明显:
示例a
int i=1;
i=10+(i++);
std::cout << i << std::endl;
这样做:
- (第1行)用值1初始化变量
i
。 - (第2行)计算10的结果加上
i
(1)的当前值(结果11)。 - (第2行)将上一次计算的结果11插入
i
。 - (第2行)将
i
从11增加到12。 - (第3行)打印12。
示例b
int i=1;
int j = i++
i=10+j;
std::cout << i << std::endl;
这样做:
- (第1行)用值1初始化变量
i
。 - (第2行)将
i
(= 1)的当前值插入j
。 - (第2行)将
i
从1增加到2 - (第3行)计算10的结果加上
j
(= 1)的当前值(结果11)。 - (第3行)将上一次计算的结果11插入
i
。 - (第3行)打印11
示例c
int i=1;
int j = i++
i=10+i;
std::cout << i << std::endl;
这样做:
- (第1行)用值1初始化变量
i
。 - (第2行)将
i
(= 1)的当前值插入j
。 - (第2行)将
i
从1增加到2 - (第3行)计算10的结果加上
i
(= 2)的当前值(结果12)。 - (第3行)将上一次计算的结果112插入
i
。 - (第3行)打印12
夏季
以下所有代码在i
末尾保留相同的值:
a)
int i = 1;
i++;
b)
int i = 1;
i = i++;
c)
int i = 1;
int k = i++;