C语言 22.如果i=3,则k=(++i)+(++i)+(i++)执行过后k的值为 ,i的值为 。(1级)

要详细解释... 要详细解释 展开
 我来答
秋风若飞
2010-05-31
知道答主
回答量:39
采纳率:0%
帮助的人:0
展开全部
i=6;
不知道你是用什么编译器编译的,在VC++里面K=15;
解释:++是自加运算符
自加运算符放在前面和后面优先级是不一样的,也即是说编译的时候,
(1)先执行的是两个放在前面的自加运算,运算结果i=5;
(2)计算K值,5+5+5=15
(3)执行放在后面的自加运算,运算结果i=6
离离原上花开
2010-05-31 · TA获得超过6856个赞
知道大有可为答主
回答量:1923
采纳率:0%
帮助的人:724万
展开全部
15
由于编译器从右向左扫描程序分析,是从右向左执行的,如果你学过编译原理,你就知道了。
下面分析如下,值得注意的是i++,i的值加1,而表达式的值不变.++i,表达式和i都加1
详细分析如下

// i=3 执行i++后 i++ 值3 i值4
// i=4 执行++i后 ++i 值5 i值5
// i=5 执行++i后 ++i 值6 i值6

这样分析结果是14,但是VC运行结果是15,不同编译器结果会不一样。
所以我现在也很纠结。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b5dd65f
2010-05-31
知道答主
回答量:20
采纳率:0%
帮助的人:20.4万
展开全部
k等于14 i=6
i++ ;i先参与计算再加1;++i 先加1,再参与计算;有括号算括号里的
首先 ++i i加1变为4;k=4
之后 ++i i加1变为5;k=4+5
再之后 i++之后i再加1;变为6再算括号之外的;k= 4+5+6=15;
不明白的话给我留言 ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式