首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

这些数是如何计算的

2011-12-11 
这些数是怎么计算的?Java codeint a 3a + a - a * aSystem.out.println(a)// 输出-3int b 10b

这些数是怎么计算的?

Java code
        int a = 3;        a += a -= a * a;        System.out.println(a);                // 输出-3                int b = 10;        b = b++;        System.out.println(b);                // 输出10                int c = 5;        c += c++ + (c++ + 0);        System.out.println(c);                // 输出16                int d = 3;        d = (d++) + (d++) + (d++);        System.out.println(d);                // 输出12


这些数是怎么计算的?结果值好神奇。。。。

[解决办法]
真恶心
[解决办法]
无聊的题

就跟问你爸爸的姐姐的妈妈的孙子是谁一样
[解决办法]
查编译过后的字节码
[解决办法]
I、3+(3-3*3)= -3

II、b++是先赋值后++的

III、先做括号里的(C++ + 0)=5,这时C=6了,所以右侧 = 11,将左侧的5 + 11得到16

IV、d++是先运算后加,所有右侧式=3+4+5=12
[解决办法]
int a = 3;
a += a -= a * a;
System.out.println(a); // 输出-3

 运算符的优先级及计算规则了解的话很简单

a=a+(a-(a*a));最后a就是3

int b = 10;
b = b++;
System.out.println(b); // 输出10

后置++是先计算后++所以 b=b++;实际等同于b=b;还是10


 int c = 5;
c += c++ + (c++ + 0);
System.out.println(c); // 输出16

有括号先计算括号 c先+0然后对c进行+1 即 c+=6+5 最后等于16

int d = 3;
d = (d++) + (d++) + (d++);
System.out.println(d); // 输出12

第一步计算第一个括号里的d++结果是3对d+1 d=4,计算第二个括号里的d++结果是4再对d+1 d=5,计算第三个括号结果是5 3+4+5 = 12

[解决办法]
这些是程序语言基础的运算符优先级问题,请楼主学习一下+-*/和++等的优先级,就明白了
[解决办法]
都是从右到左
int a = 3;
a += a -= a * a;
----------------------
1:a*a=6
2:a -= a*a就等于a = a- a*a;所以a=-6
3:a += (**);就等于a = a+(**)
4:所以a += -6=>a=a-6=3
===================================
int b = 10;
b = b++;
这个在Java中,是b先赋值后自加,所以左边的b还是10
打印b是打印左边的b,C++就是打印右边的b
=========================================
int c = 5;
c += c++ + (c++ + 0);
这个不是很懂啊
它等于int b = c+ c++ +(c++ +0)



[解决办法]
一题
Java code
int a = 3;a += a -= a * a;//先计算a*a=9;-->再计算3-9=-6-->再计算a=3+(-6)=-3System.out.println(a);
[解决办法]
Java code
        int a = 3;        a += a -= a * a;//      先算 a*a; 然后 a += a; 最后(a+=a) -= (a*a)          System.out.println(a);                // 输出-3                int b = 10;        b = b++;        System.out.println(b);                // 输出10        // 等价 b = b; System.out.println(b); b++;        int c = 5;        c += c++ + (c++ + 0);        System.out.println(c);                // 输出16        //先 (C++ + 0),就这个c=6,其他两个都是5        int d = 3;        d = (d++) + (d++) + (d++);        //d = 3 + 4 + 5;; d++先使用d,在使d增加1        System.out.println(d);                // 输出12
[解决办法]
探讨
I、3+(3-3*3)= -3

II、b++是先赋值后++的

III、先做括号里的(C++ + 0)=5,这时C=6了,所以右侧 = 11,将左侧的5 + 11得到16

IV、d++是先运算后加,所有右侧式=3+4+5=12

------解决方案--------------------


研究后我这里说下我对b++的理解

b++ 可以看成一个函数 {temp = b,b += 1, return temp}

也就是说 b = 10, c = b++ 的话, 最后 b=11, c=10

可是 b = b++ , b++ 之后 b=11,但是返回值是temp,也就是10,这个时候等于 b = temp
也就是 b =10
[解决办法]
如果我是领导,有谁写出这样的代码,我会立马让他回家!

热点排行