猿问

求解为什么这个公式等于47?

int m = 5;

int n = 7;

int x=(m+n*5+(n--));

为什么X的值是47.....算不出来啊..



汤钺
浏览 3067回答 15
15回答

beckzl

n--的意思是先运算 然后再自身减一    所以计算的时候是7而不是6。

miku61

x=(m+n*5+(n--))  =(5+7*5+(7--))我相信楼主这步应该没有疑惑。我们先将(7--)搁浅,前面部分的结果为x=(40+(7--))这里就涉及 n-- 是什么意思的问题了n--其实是一种缩写,原来的表达应该是“n=n-1”,只不过这种表达比较好看啦,方便啦。普遍什么的大家都这么用了。这里插播一个小知识点。n--  和  --n  的问题--(或者++)在字母的后面,表示为:赋值之后再运算。而--(或++)在字母的前面表示运算之后再赋值。运算就是指加1的运算。题目是--在字母后面,所以先赋值。再自己加上1.因此,拆解下来x=(40+n)    n=n-1;所以x=47,n=6;参考程序(c语言):#include<stdio.h>main(){    int m=5;    int n=7;    int x=(m+n*5+(n--));    printf("x=%d,n=%d",x,n);}

Qyizos

我想你应该是在n--这里搞不明白吧。你可能认为n--之后,值变为了6。这里要说到n--和--n的区别:--n是遇到之后,直接对n减1                                            n--是在本语句执行结束后,才对n进行减1操作。望采纳。

儁破孩

int x = (5 + 7 * 5 + (7));如果你打印n的值为6

饺子蜜饯

简单粗暴理解就是,以分好(;)为界,出现后++或者后--,在分号这一句代码结束之前都用原来的数值,分号结束后在给原数值加减一!   int x=(m+n*5+(n--));   这一句分号以前n都等于7,分号完结时在给n减去1

weibo_微天下微生活_0

--n不就是你理想的值了,执行时n先自减1

happygl16

5*7=35+5=40+7=47  n--不执行 如果--n 就执行

Happy_Imp

你用--n试试..

饺子蜜饯

JVM运行时是这样的   

心魔0

n--在下一次调用n时才会是6所以你的公式是  5+35+7
随时随地看视频慕课网APP

相关分类

Java
我要回答