c语言中i++与++i的使用技巧

本文详细解析了C++中前置与后置自增运算符的使用方法及区别,并通过具体实例展示了复杂表达式的计算过程,帮助读者深入理解自增运算符的工作机制。

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

  ++i  先自加,在使用

 i++  先使用,再自加

粗略地看,++i和i++的作用都相当于i = i+ 1,但++i和i++的区别在于++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()

{

    int i = 2;

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

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

    return 0;

}

输出结果为:16

首先要知道运算方向是从左往右,因为要先运算(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++与函数一起使用,如

类型二

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

#include <stdio.h>

Int main()

{

Int i = 2;

Printf(“%d %d %d %d %d”, ++i, ++i, i++, ++i,i++):

}

输出结果为 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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值