一道C语言题目,希望高手给个详细的解答

main(){inti=6,k=6,a,b;a=(i++)+(i++)+(i++);b=(++k)+(++k)+(++k);printf("\ni=%d,k=%d",i,... main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
展开
 我来答
arkilis
2006-07-29 · 超过15用户采纳过TA的回答
知道答主
回答量:58
采纳率:100%
帮助的人:46万
展开全部
我来给你分析分析:采用turbo c
i++的运算规则是先引用再自加,所以6+7+8而i的值变成了9
++k的规则是先自加然后在引用,所以7+8+9而k的值变成了9
所 以最终i=9,k=9
a=21,b=24;
由于不同的编译样器的编译方式不一样,所以答案也许有所不同,例如turbo的编译方式是对a=(i++)+(i++)+(i++); 每一个都进行运算,而vc是分别对三个(i++)进行运算
歪歪爱子鸣
2006-07-29 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2802
采纳率:0%
帮助的人:2683万
展开全部
i=9 k=9
a=21 b=24

a=(i++)+(i++)+(i++);就相当于a=6+7+8

b=(++k)+(++k)+(++k);就相当于b=7+8+9

无论i++还是++k,最后都需要输出+1后的值,所以i和k的值相同,但是运算过程中的先后顺序决定了a和b的值是有差别的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0df86feb1
2006-07-29
知道答主
回答量:63
采纳率:0%
帮助的人:0
展开全部
main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
不同的编译器运行的结果会有所不同,i++为后++,在a=(i++)+(i++)+(i++);赋值之前,i的值保持为6 ,语句运行后,再对i进行三次自加运算,所以a的值为18,i的值为9;
++k是前++,在b=(++k)+(++k)+(++k); 赋值语句运行之前就对k进行三次自加运算,K的值为9,所以b==9+9+9==27;
最后的运行结果为
i=9,k=9
a=18,b=27
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一闪一闪笑嘻嘻
2006-07-29 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:165
采纳率:0%
帮助的人:102万
展开全部
main()
{ int i=6,k=6,a,b;
a=(i++)+(i++)+(i++);
b=(++k)+(++k)+(++k);
printf("\n i=%d,k=%d",i,k);
printf("\n a=%d,b=%d",a,b);
}
个人认为答案为:
i=9,k=9
a=24,b=24
虽然i++和++k运算顺序不同。但(i++)和(++k)的运算顺序应该是一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式