i++与++i的详解

i++   后加加,原理:先自增,然后返回自增之前的值
++i   前加加,原理:先自增,然后返回自增之后的值

重点:不论++在前或++在后,都有个共同点是先自增(逻辑关键点

例如:i++是先返回i的值,然后再自增,这是错误,是先自增,然后再返回自增之前的值

很多人对这两个逻辑不以为然,但这往往是解题关键

i++原理:

int temp = i;
i = i + 1;//i自增
return temp;  //返回自增前的值

++i原理:

int temp = i;
i = i + 1;//i自增
return i;  //输出i自增后的值

例:

int i = 0;
i = i++;  
cout<<i<<endl; // 结果:i=0

分析:

  1. 先看i++,i 自增等于 1,但是又返回自增之前的值0(i此时的真实值为1,是i++的值为0)
  2. 把0赋值给右边的i,i的值变为0

在运算过程中还要牢记表达式原则

一个变量也是表达式,多个表达式的加减法运算都是从左到右进行的(不要和优先级弄混)

例:

int a = 2; 
int b = (3 * a++) + a;
cout<<b<<endl; // 结果:b=9

分析:

  1. int b = (3 * a++) + a,
  2. int b = (3 * 2) + a,此时a的值已经为3
  3. int b = (3 * 2) + 3; b = 9,a=3
int a = 2; 
int b = a + (3 * a++);
cout<<b<<endl;// 结果:b=8

分析:

  1. int b = 2 + (3 * a++),遵从表达式原则,a=2.

  2. int b = 2 + (3 * 2),a++后,a = 3,但a++返回自增之前的值2

  3. int b = 2 + (3 * 2),b=8,a=3


两个例子加深理解:

int i = 1;
int j = 1;
int k = i++ + ++i + ++j + j++;  
cont<<k<<endl; // 结果:8

分析:

  1. i++,i=2,  i++=1
  2. ++i,  i=3,  ++i=3
  3. ++j,  j=2,  ++j=2
  4. j++,  j=3,  j++=2
int a = 0;
int b = 0;
a = a++;
b = a++;
cout<<a<<b<<endl; // 结果:a = 1, b = 0

分析:

  1. a=a++,a++后a=1,a++=0,a++将0赋值给a,a=0
  2. b=a++,a++后a=1,a++=0,a++将0赋值给b,b=0

不是纯原创,侵删


 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值