main() { int i=5,j=5.p,q; p=(i++)+(i++)+(i++); q=(++j)+(++j)+(++j); printf("%d,%d,%d,%d",p,q,i,j);

为什么结果是15,22,8,8啊?那个q为什么得出是22啊?... 为什么结果是 15,22,8,8啊?那个q为什么得出是22啊? 展开
 我来答
jar10302
推荐于2017-10-05 · TA获得超过137个赞
知道答主
回答量:93
采纳率:0%
帮助的人:98.4万
展开全部
一般的运算规则如下:
()里面的表达式先算,
++ 在变量前面则将变量加1然后取变量值,
++在变量后面则先取变量的值然后也要将变量加1

所以: p =(i++)+(i++)+(i++) = 5 + 6 + 7 = 18
q =(++j)+(++j)+(++j) = 6 + 7 + 8 = 21
i,j 分别进行了三次++操作,故其值为原来的值5加3 = 8
但是这里面还与具体的编译器有关,你给出的答案可能是因为编译器的运算规则如下
p =(i++)+(i++)+(i++) ()中的i++ 运算同时进行,此时i = 5 ,p = 5+5+5 =14
q =(++j)+(++j)+(++j) = 6 + 8 + 8 = 22
手机用户83419
2011-03-11 · TA获得超过121个赞
知道答主
回答量:243
采纳率:0%
帮助的人:163万
展开全部
下break和continue的含义,break是指跳出当前循环体(注意当前循环中后面的语句不执行),然后继续执行外一层循环下面的语句;continue是指跳出当前循环体中的此次循环(当前循环后面的语句不再执行),但是接着进行下一次循环,比如当前循环控制变量i=0,接着从i=1开始,它与break的区别就是break是直接跳出当前循环体了。
回头看程序,i=0和1时,j循环至5就会break,然后进入i<2,continue,后面就不再执行;i=2时,j循环至5就break,然后执行printf("%d",j),输出5;然后i=3,j循环至5break,然后进入i>2,break,跳出循环体,执行printf("%d",i),输出3。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友302c224
2011-03-10 · TA获得超过152个赞
知道答主
回答量:105
采纳率:0%
帮助的人:103万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式