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);
3个回答
展开全部
一般的运算规则如下:
()里面的表达式先算,
++ 在变量前面则将变量加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
()里面的表达式先算,
++ 在变量前面则将变量加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
展开全部
下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。
回头看程序,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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询