如果int I=2,则k=(i++)+(++i)+(i++)执行过后k和i的值()

A.7,5B.8,5C.9,5D.6,5... A.7,5 B.8,5 C.9,5 D.6,5 展开
 我来答
百I度网友AQnlQ
2019-04-02 · TA获得超过143个赞
知道小有建树答主
回答量:188
采纳率:37%
帮助的人:14.8万
展开全部
在C语言中,表达式i++和++i都是将变量i的值+1后,再存入i的意思。如果是单独使用,这两个走达式没什么差别,但如果将其代入到其它算式或语句中,两者是有差异的。i++表示变量 i 先参与算式运算后再+1,而++i 表示i值+1后再参与运算。所以在程序中,被代入的算式会因此而得不同结果。
具体到这个题目,如果单纯按照所写算式的先后顺序考虑,i初值为2,所以k和Ⅰ分别为
k=2+3+3=8
i=3+1+1=5
不过因为这个算式是个连加算式,而加法操作的运算优先级是相同的,而对同伏先级运算,编译软件在生成运行代码时,并不一定是绝对地从左至右运行,考虑到代码生成效率,可能会把相同操作归并到一起。所以在对此题的回答中,有些人指出,不同版本的编译软件运行结果会不同。这样的说法是有道理的。
最后一句,在自己编写程序时,如果不是必须的原因,还是不要这样写了。
wxb2004
2019-03-02 · TA获得超过100个赞
知道答主
回答量:222
采纳率:39%
帮助的人:53万
展开全部
没有正确答案可选.
i++表达式值是2,i自增为3;
++i表达式值是4,i自增为4;
i++表达式值是4,i自增为5;
K的值为2+4+4是10,i的值是5.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-02-27
展开全部

这个题目与编译器有关,不同的编译器的执行结果不一样的。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zcy990718
2019-02-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1.2万
采纳率:66%
帮助的人:1553万
展开全部
C.i=5,k=9
附汇编:
012B3885 mov eax,dword ptr [i] //寄存器eax=i=2
012B3888 add eax,1 //寄存器eax++; ,eax=3
012B388B mov dword ptr [i],eax //i=eax=3
以上三句先处理了++i
012B388E mov ecx,dword ptr [i] //寄存器 ecx=i=3
012B3891 add ecx,dword ptr [i] //ecx += i ecx=6
012B3894 add ecx,dword ptr [i] //ecx += i ecx=9
012B3897 mov dword ptr [k],ecx //k=ecx=9
012B389A mov edx,dword ptr [i] //edx=i=3
012B389D add edx,1 //edx++; edx=4
012B38A0 mov dword ptr [i],edx //i=edx =4
012B38A3 mov eax,dword ptr [i] //eax=i=4
012B38A6 add eax,1 //eax++;eax=5
012B38A9 mov dword ptr [i],eax //i=eax=5
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2019-02-28 · TA获得超过287个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:60.2万
展开全部
没有正确答案 k=10;i=5;
亲测 望采纳~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式