
C语言中 s+=i++ 混淆了。求教~~
我看见教程里是这样的:s=s+i和i=i+1i=i+1可以变为i++,即为i自加,对吧?于是那两条就可以变为s+=i++对于这我很混淆假如s=0,i=1s+=i++之后s...
我看见教程里是这样的:
s=s+i和i=i+1
i=i+1可以变为i++,即为i自加,对吧?
于是那两条就可以变为s+=i++
对于这我很混淆
假如s=0,i=1
s+=i++之后s赋值为多少呢?
是赋值为1的i自加后赋值为2,然后再与赋值为0的s相加,得到s赋值为2,
如果继续执行第二次的话,是不是赋值为2的i自加后赋值为3,然后再与赋值为2的s相加,得到s赋值为5呢?
求详细正确的解释! 展开
s=s+i和i=i+1
i=i+1可以变为i++,即为i自加,对吧?
于是那两条就可以变为s+=i++
对于这我很混淆
假如s=0,i=1
s+=i++之后s赋值为多少呢?
是赋值为1的i自加后赋值为2,然后再与赋值为0的s相加,得到s赋值为2,
如果继续执行第二次的话,是不是赋值为2的i自加后赋值为3,然后再与赋值为2的s相加,得到s赋值为5呢?
求详细正确的解释! 展开
9个回答
展开全部
s=1
i++的意思是先使用i的值然后再自加1
++i的意思是i先自加1然后再运算使用
s+=1的意思是s+1的运算结果赋给s
所以s+=i++ 之后 s=1 i自加1等于2 执行第二次同样的运算的话 同理s+=i++
第二次s为2 i=2
绝对正确
i++的意思是先使用i的值然后再自加1
++i的意思是i先自加1然后再运算使用
s+=1的意思是s+1的运算结果赋给s
所以s+=i++ 之后 s=1 i自加1等于2 执行第二次同样的运算的话 同理s+=i++
第二次s为2 i=2
绝对正确
展开全部
i++表示的是,先引用,后自加;s+=a等价于s=s+a,所以,应该是这样算才对,先引用i=1,然后s=s+i,s=0,i=1;所以最后s等于1;引用第二次后是i=2了,s等于1,加加起来就是s=2+2=4;一次类推,第三次就是s=7了,我上司这样理解的,i++才是先自加,后引用。
追问
您好!我是这样理解的:
s+=i++
①1 2
②3 3
③6 4
i是一步一步的自加,第一次执行程序时是2,第二次是3,第三次是4.。.。。。。。。。
s就是上一步s的赋值与上一步i的赋值相相加~~!!~
如有错,,,请大侠指出我的错误!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照运算符的优先级,原式可写为s+=(i++)。i++是在运算后才进行自增,因此s=0+1=1;i=1。
同理:第二步的s=1+1=2。
同理:第二步的s=1+1=2。
追问
你说的第二步s=1+1=2,其中一个1是s原来的赋值吧?那么另一个1是什么?不应该是1+2=3吗?因为第一步时i在运算后已经自加了,在第二步事i赋值不是2吗?于是,s+=i++在第二步时就是s=s+i=1+2=3 按我的理解就是这样。麻烦大侠指出我的错误!
追答
i++与++i不同,(i++)的值在当前表达式中仍然是i,整个表达式完毕后才会进行+1的运算,因此在这个表达式中,i的值仍然是1,执行完毕后才更新为2。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i=i+1可以变为i++.
假如s=0,i=1,s+=i++之后s = 1,i = 2 。
如果再执行一遍s+=i++之后s = 3, i = 3。
原因是‘+=’属于赋值运算符,由于运算符的优先级,会先执行s=s+i,然后再执行i++
假如s=0,i=1,s+=i++之后s = 1,i = 2 。
如果再执行一遍s+=i++之后s = 3, i = 3。
原因是‘+=’属于赋值运算符,由于运算符的优先级,会先执行s=s+i,然后再执行i++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s+=i表示s=s+i,s+=i++,先进行s=s+i,得S=1,i=1,再i自加,得i=2
追问
嗯,谢谢,执行第二次的时候呢?s,i各为几了?
追答
执行第二次,S=S+i=1+2=3,然后i自加,得i=3。每次都是先相加赋值,然后进行i的自加。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询