c语言问题 ++的问题

i=2k=(++i)+(++i)+(++i);这个k我觉得应该等于自右向左5+4+3=12但是结果是13#include<stdio.h>voidmain(){inti=... i=2
k =(++i)+(++i)+(++i);
这个k我觉得应该等于
自右向左 5+4+3=12
但是结果是13
#include <stdio.h>
void main(){
int i = 2,k;
k =(++i)+(++i); //这个怎么输出是8
printf("%d",k);
}
展开
 我来答
求大哥大姐了55
2012-05-07
知道答主
回答量:4
采纳率:0%
帮助的人:3.2万
展开全部
我分析的结果是
这个++ -- 如果有多条语句的话 是先算前面2个的
这个不是你说的那样自右像左
是从左像右边;;;那个++才是自右像做,,,不过运算的时候是 + - 这个是自左像右
k=(++i)+(++i)+(++i) ; 这个等价于k=[(++i)+(++i)]+(++i) 先算前面2个 =4+4+5
k=(--i)+(--i)+(--i) ; 这个等价于k=[(--i)+(--i)]+(--i) 先算前面2个 =0+0-1
k=(++i)+(--i)+(++i) ;这个和上面同理 2+2+3=7
还有就是更多语句 也同理。。我也举例几个
k=(++i)+(++i)+(++i)+(++i)+(++i) ; 结果=4+4+5+6+7=26
k=(--i)+(--i)+(--i)+(--i)+(--i) ;结果= 0+0-1-2-3-6
k=(++i)+(--i)+(++i)+(++i)+(++i) ;结果=2+2+3+4+5=16

每个我都编译过 vc++下面
淦海瑶s1
2012-05-07 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:768万
展开全部
一般这种语句没什么意思,不同的编译环境可能不同
但是我试验过,在tc,win-tc,vc中,所有的结果都如
k =(++i)+(++i); //这个怎么输出是8
这个一样,是++完后,在统一+
也就是说,当i是2的时候,完成(++i)+(++i)这个的时候,i变成4,再统一加,结果是4+4

这种语句最好不要写,也就是蛋疼的老湿出题的时候能写这样的语句
一般程序不会出现这样的语句,在编写程序的时候,也要尽量避免这样的语句,没什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
juetforwork
2012-05-07 · 超过19用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:54万
展开全部
看反汇编= =
k =(++i)+(++i)+(++i); 不是你看的那样,看编译器反汇编后的实际步骤是:
++i;//i=3
++i;/i=4
k=i+i;//k=4+4=8
++i;//i=5
k=i+k;//k=5+8=13

对于三位(++i)+(++i)+(++i);会分解为两步[(++i)+(++i)]+(++i),而(++i)+(++i)的过程是先把算式两边的++符号运算后再执行加法,因为C的优先级++的优先级比+高

如果你懂汇编的话,最好自己看下,= =我原来也不会这种问题,看下就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fe74e2
2012-05-07 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:277万
展开全部
k =(++i)+(++i)+(++i);
相当于四句语句:
++i;
++i;
++i;
k=i+i+i;
k =(++i)+(++i); 这句同理,
关键就在:
++i先让i自增1,再使用自增1后的i
i++先使用原始的i值,再让i自增1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
afei631
2012-05-07 · 超过10用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:36.9万
展开全部
第一个 应该是4+4+5
第二个 是4+4;
由于i对应的是同一个内存空间,前++是先计算,++i + ++i先i自加两次i为4,在4+4
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
352168337
2012-05-07 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:127万
展开全部
这个和程序编译软件有关。VC++6.0和Turbo C运行出来的结果可能就不一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式