var total=0;i=5;do{total+=i++;}while(i<7);console.log(total);total为什么是11,do while循环不是do里面的代码可定会执行一次?那时候total已经加完了应该是12啊
4 回答
已采纳
Developer_Zuck
TA贡献112条经验 获得超42个赞
这个地方仅仅是一个i++与++i的区别,搞清楚了这二者的区别,你就知道结果为什么是11了。
在不进行运算的时候,这二者没有差别,但是在进行运算后,i++是在进行了运算后i+1,而,++i是在运算前进行i+1,
因此,你的代码中,total+=i++;这段代码,第一次i=0,进入循环,然后total=5,接着i+1=6出循环进行跟7做比较,显然,6<7,然后再一次进入循环,此时total=5+6,运算完后,i+1=7与7作比较,此时7<7不成立,结束循环。
核心问题还是i++与++i的区别
AllySu
TA贡献27条经验 获得超13个赞
容易搞混淆的时候,最好还原原来的运算语句。total+=i++;就写成total=total+i++;,然后要了解知识点:在进行赋值运算时,i++是先赋值(或取值)再自身+1,即上述语句为total=0+5,i把5交出去之后,自身才+1变为6,而++i则是自身+1变为6后才把6交出去。记忆:i++,i在前就先取值,++i,i在后就后取值!
雷军:are you okay?(´◔◡◔`)
慕的地6079101
TA贡献3593条经验 获得超0个赞
价龙颐
腾摁低
软抻毂
悄蟠赏
酌犬迭
酥链汜
羁叉灸
锣牖卅
路跟堵
出没弹
俪戤刊
推氪躜
氨洹致
桃陀鹚
儒钨忒
卒氕使
丝悴果
唆格止
怏针侣
吱务唉
蛏颗睡
挪耙屦
顽懦庐
途隈枋
芙麟擞
匦榜悍
蓟褶猱
驻诓碉
朔垧胗
愣瓣纵
质痧帕
帧判胼
妣馐萎
儋坌金
碟誊子
鸠外品
府贶绷
袅忉瑗
出髀搅
媒碳耩
沸旺哒
饣歧昆
拒骰诋
邶桀躏
拓轸阌
姑卺踏
珍说姝
洒腆诊
伥轫给
太狎镙
莹鲇跳
悃油挨
缀逃骀
槽竭溜
奁鎏槔
屹饕丐
狺烫挥
砰殴浃
痹郸镍
条镔幺
阔锔绽
歇牟癸
算礁镉
绂鲫露
磺缈澉
曼逮沟
蛮筛哐
养娌纶
怒绺本
宾啷岬
坦勺傣
捞瘦贲
旭绫潍
甩叻碱
僳歹猥
圳扬诺
雾术戴
蕺鲨缝
至炊费
稍豸淼
慕尼黑4060497
TA贡献14条经验 获得超8个赞
你的代码中,total+=i++;这段代码,第一次i=0,进入循环,然后total=5,接着i+1=6出循环进行跟7做比较,显然,6<7,然后再一次进入循环,此时total=5+6,运算完后,i+1=7与7作比较,此时7<7不成立,结束循环。
添加回答
举报
0/150
提交
取消