为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

汤钺 2016-01-28 22:37:22
int m = 5; int n = 7; int x=(m+n*5+(n--));为什么X的值是47.....算不出来啊..
查看完整描述

15 回答

?
beckzl

TA贡献2条经验 获得超7个赞

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

查看完整回答
7 反对 回复 2016-01-29
已采纳
?
miku61

TA贡献3条经验 获得超2个赞

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);
}

查看完整回答
2 反对 回复 2016-01-29
?
Qyizos

TA贡献3条经验 获得超2个赞

我想你应该是在n--这里搞不明白吧。你可能认为n--之后,值变为了6。

这里要说到n--和--n的区别:--n是遇到之后,直接对n减1

                                            n--是在本语句执行结束后,才对n进行减1操作。

望采纳。

查看完整回答
1 反对 回复 2016-01-30
?
儁破孩

TA贡献19条经验 获得超5个赞

int x = (5 + 7 * 5 + (7));

如果你打印n的值为6

查看完整回答
1 反对 回复 2016-01-29
?
饺子蜜饯

TA贡献5条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-02-01
?
weibo_微天下微生活_0

TA贡献3条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-01-30
?
happygl16

TA贡献7条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-01-30
?
Happy_Imp

TA贡献2条经验 获得超2个赞

你用--n试试..

查看完整回答
反对 回复 2016-01-29
?
饺子蜜饯

TA贡献5条经验 获得超0个赞

JVM运行时是这样的   

//img1.sycdn.imooc.com//56ab32bb0001219404300235.jpg

查看完整回答
反对 回复 2016-01-29
?
心魔0

TA贡献2条经验 获得超0个赞

n--在下一次调用n时才会是6
所以你的公式是  5+35+7

查看完整回答
反对 回复 2016-01-29
?
zlybright

TA贡献4条经验 获得超0个赞

自增,自减运算问题          

var n=0; 
console.log(n++)  // 输出0 
console.log(n)    // 输出1

//---------------------
var n=0; 
console.log(++n)    //输出 1
console.log(n)     //输出 1


查看完整回答
反对 回复 2016-01-29
?
hhh112123123

TA贡献158条经验 获得超98个赞

运算符的优先级哦   (5+7*5+(7))

查看完整回答
反对 回复 2016-01-29
?
HansonQ

TA贡献223条经验 获得超56个赞

这个涉及到i++,i--运算这两个是先赋值再运算。

public static void main(String[] args) {
        int m = 5;

        int n = 7;
        int j =(n--);
        int x=(m+n*5+(n--));
        System.out.println(j);
        System.out.println(n);
    }
//运行结果

7
5



查看完整回答
1 反对 回复 2016-01-28
  • 汤钺
    汤钺
    首先谢谢回答~但请问n--赋值后是7,那之后的自减运算体现在哪呢?
?
just_fun

TA贡献1条经验 获得超0个赞


n自减之后的值并没有赋值到n,所以n还是7

查看完整回答
反对 回复 2016-01-29
  • 15 回答
  • 0 关注
  • 3066 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信