i++与++i

近些年来,各种笔试题就喜欢出这种自增自减运算符,这种题目若没有好的解题方法很烦人,今天我就教你接这种题目的方法,以后都是送分题。 
小伙伴们先测试一下自己的水平: 
int main() 

int i = 2; 
int num; 
num = (i++) + (i++) + (i++) + (i++); 
printf(“i = %d, num = %d”,i,num); 
}

答案是:i = 6,num = 8;(你算对了吗?)

我们都知道i++是先使用完再自加,而++i是先自加再使用; 
问题就出在完上面,何时算完,当遇到“函数的()”“,”“;”算结束 
好了,我们一点一点分析吧:i = 2,i一直都等于2,,一直等到 i + i + i + i 等于8赋给num之后,i 才开始自增,这就叫使用完之后再自加。 
再看一题:int i = 2;num = (++i)+(++i)+(++i)+(++i);求i,num。 
看着题之前我们先明白一件事:就是计算3+2+5+4这个式子是不是先看到3和2 然后执行加法对吧,这题也一样,我们先看到第一个 i (i=3),然后看到第二个i(此时i=4),然后再执行加法4+4,然后看到第三个i(i=5),前面的结果和第三个 i 相加,8+5,然后看到第四个 i(i=6), 
将前面的结果和 i 相加13+6=19=num,所以这题num=19;i=6;

是不是还有点迷糊,好,我们再看一题:i=2; 
i = i *((i++)+(++i));求 i ,首先我们找到两个 i 求加法发现括号里面的一个是(i++),一个是(++i),根据先前所讲的(i++)先不自加,所以i=3,3+3=6,然后6和外面的3相乘=18,,最后才执行(i++)=19,所以i的值为19;记得(什么时候i++,要遇到结束符函数的(),和;这是i才++)。

为了验证心中所想,我们再看一题:i=2; 
i=(i++)+(++i)+(++i)+(i++);求 i ,3+3=6,6+4=10;10+4=14;14+1=15;15+1=16;

好了,上面的题目估计也已经会了, 
下面在函数参数传递时怎么算: 
int f(int a,int b) 

printf(“%d,%d\n”,a,b); 

int main() 

int i = 2; 
f(i++,i++); 
f(i++,++i); 
f(++i,i++); 
f(++i,++i); 

函数传参时还怎么计算呢? 
老师总结一个规律,i++等于数值,++i,i=变量名 
我们看第一个f(i++,i++),对了,还有一点,函数在传参是从右向左传的,先看最右边的i++ 它等于数值所以是2,因为遇到逗号,所以(i=3)然后看左边的i++,它等于数值是3 
所以值是3,2 
我们再看f(i++,++i);++i等于i,(此时i=3)然后i++等于3,然后遇到i++(此时i=3),然后结束,i=4,所以值是3,4

看一道复杂点的:f(++i,++i,i++,++i,i++),我们从最右边开始(,2)(,i,2)(4,i,2)(i,i,4,i,2),然后所有的i等于7,所以答案:77472

++ii++

Int i = 1

(i++)+(i++)+(i++)=6
i=4
(++i)+(++i)+(++i)=9
i=4

 

 

Int  i = 2

函数从右向左看,i++看成2++i看成ii也看成i

 Int fun(i++,++i)

Printfab);

A = 3

B = 4

*我总结这种函数传参的方法是所有++i和i都等于i最大值 

i++等于它右边的的i 的值**举个例子,i++,++i,i,i++,++i 
等于( 5, i, i,3,i)【i++右边加几次就是几】 
i等于最大值6,最后答案(5,6,6,3,6);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值