i++,++i 操作符


首先我们要先知道++i与i++的基本用法及其基本区别

   ++i  先自加1,再使用;

 i++  先使用,再自加1。

相同:++i和i++的作用都相当于i = i + 1。

区别:++i是先执行i = i + 1后,再使用i的值,

           而i++是先使用i的值后,再执行i = i + 1。.

例: 

          假设 i=3;

          j = ++i   (i的值先变成4,再赋给j,j的值为4)

          j = i++   (先将i的值赋值给j,即j为3,再执行i的自加,i为4)


类型一:

#include <stdio.h>

int main(void)

{

    int i = 2;

    i = (i++) + (++i) + (++i) + (i++);

    printf("i = %d\n", i);

    return 0;

}

输出结果为:16

首先要知道运算方向是从左往右,i = ((((i++) + (++i))+(++i))+(i++)) 。

第一步:先运算(i++) + (++i),这是一个整体,所以i的值为++i中自增过后的值,即为3。

第二步:然后与++i相加,又因此时i也要自加,所以此时i为4。

第三步:然后与i++相加,此时i不自加,i为4。

第四步:运算结果为3 + 3 + 4 + 4 = 14。

第五步:又因为式子为   i = (i++) + (++i) + (++i) +(i++);要输出i的值,所以要将式子中两个i++中后自加的1

加上,即i = 3 + 3 +4 +4 +2=16。

若在程序中加一个int m;令m= (i++) + (++i) + (++i) + (i++);

则输出结果m为14,因为题中是求m的值,所以不用考虑最后i++中的自加。

再如

i=(++i)+(i++)+(++i)+(i++)+(i++);

此时i=3+3+4+4+4+3=21


类型二

在函数中,运算方向为自右往左,在运算过程中要将++i替换成变量名,i++替换成数值。

#include <stdio.h>

int main(void)

{

    int i = 2;

    printf(“%d ,%d ,%d ,%d ,%d\n”, ++i, ++i, i++, ++i, i++);

    return 0;

}

输出结果为 7, 7 ,4 ,7, 2

首先运算方向自右往左

1.     最右面i++替换成数值,即为2,此时i自加1为3

2.     将++i替换成变量i,此时i继续自加1为4

3.     将i++替换为数值,即为4,此时i继续自加1为5

4.     将++i替换成变量i,此时i继续自加1为6

5.     将++i替换成变量i,此时i继续自加1变为7

此时结果为(i,i,4,i,2)

又因为最后运算结果i为7,即结果为7, 7 ,4 ,7 ,2

 

同样若printf(“%d ,%d ,%d ,%d ,%d”, i++, ++i, i, i++,++i);

其结果为(5,i,i,3,i)

因为其中有个i,所以这一步i没有自加,所以最后i的值为6

即5,6,  6,3, 6


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值