有关C++自增运算符的问题

定义inti,j,m,n;i=8j=10;m=++i+j++;n=(++i)+(++j)+m.输出i,j,m,n的值。我是这样计算的:根据自增运算符的结合方向是自右向左,... 定义int i,j,m,n;i=8 j=10;m=++i+j++;n=(++i)+(++j)+m.
输出 i,j,m,n的值。

我是这样计算的:
根据自增运算符的结合方向是自右向左,因此m=++i+(j++)=++i+11=++(i+11)=++19=20,n=(9)+(11)+20=20+20=40,最后输出结果为8,10,20,20. 为何答案为10,12,10,41,求详解,需要有计算步骤及解释.
展开
 我来答
百度网友9d89f16
2015-08-17 · TA获得超过187个赞
知道小有建树答主
回答量:433
采纳率:0%
帮助的人:169万
展开全部

(1)首先,m的结果应该是19吧,我运行了程序,确实等于19;

(雀轮2)自增运算符属于单目运算符,而+则为双目运算顷巧信符,单目运算符的优先级要高于双目运算符宽局,所以,m=++i+j++运算顺序相当于m=(++i)+(j++);

(3)++i以i+1之后的i值为此表达式的值,i++则以i为表达式的值;

(4)m=++i+j++ = m=(++i)+(j++)=9+10=19;

(5)n=(++i)+(++j)+m = 10 + 12 +19 =41;

更多追问追答
追问
第(5)步(++j)的值怎么成了12,怎么不是11呢?
追答
因为j原来的值是10,第(4)步,j++之后,j=11了啊,然后第5步++j,自然j=12啊
仙戈雅3n
2015-08-17 · TA获得超过5789个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:873万
展开全部
int i, j, m, n;
i = 8;
j = 10;
m = ++i + j++;   神猛// ++i是前置自增所以是++i变为9  j++是后置自增
         磨态        // 所以先取前置自增的值9+j本来的值10 m=9+10=19
n = (++i) + (++j) + m; // 此时经瞎瞎源过上面的自增后i为9,j为11,这里原理同上,i和j都是前置自增,所以先取++后的值分别为i=10,j=12,m=19 n=10+12+19=41


关键要理解透何谓前置自增(减)和后置自增(减)以及它们的区别:顾名思议,前置就是先自增(减)再取出值,后置自增(减)就是先取出值,然后再作自增(减)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lishimin1972
2015-08-17 · TA获得超过741个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:448万
展开全部
m=(++i)+(j++)=9+10=19, i=9, j=11
n=10+ 12 + 19 = 41, i=10, j=12
所以答案中蚂斗为卖磨: 10,物差12,19,41
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式