java中运算问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 22:38:30
int a=1; int x=0;
a=x+++x++; 这里a=(1),x=(2)
a=a++-x--; 这里a=(-1),x=(1)
a=x--+x==; 这里a=(1),x=(1)
a=++x+x==; 这里a=(4),x=(3)
这些a和x怎么算出来的啊,我第一个算式的a就和答案不一样,不过程序运行出来的确是()里的答案,谁帮忙解释下啊- -
啊,我把后面的++写成==了,没打shift,抱歉

int a=1; int x=0;
a=x+++x++; 这里a=(1),x=(2)
a=a++-x--; 这里a=(-1),x=(1)
a=x--+x==; 这里a=(1),x=(1)
a=++x+x==; 这里a=(4),x=(3)

a=x+++x++; 这里a=(1),x=(2)
a=x+++x++ 分解下为
a = (x++) + (x++)
由于x++为 先用值 后++所以 第一个x++ 的表现值 为0, 但此时x 为1

a = 0 + (x++) 此时x=1
同理 第二个 (x++)表现值为1 此时x为2;
a = 1

后来几个同理
注意1
++x 是用计算++后的值
x++ 是用没计算的值
但是无论上面哪种情况 x 都++过了

注意2
++ 的优先级 大于 四则运算(+ - * /)

例子
a = 0, x = 1;
a = x++; a = 1, x = 2;

a = 0, x = 1;
a = ++x; a = 2, x = 2;

最讨厌这种垃圾题目的

你若是在公司里写代码,早被骂了

可读性为0,维护也费事。

这种题目少研究,以后你也别写这样的代码

x++是运算之后x+1 而++x 是运算之前x+1 ;

法则1:x++ 你可以把它想成 x=x;运算式;x=x+1;
法则2:++x 你可以吧它想成x = x+1; 运算式;
法则3 a=a++;这种模式和a=a是等价的。 同理a=a--和a=a也是一样的
第一个等式 a=x+++x==; 等价与
a=0+x++;//x仍然为0
x=x+1;//x变成1了
a=0+1;//a = 1
x=x+1; //x=2
第二个等式 a=a++-x--等价于
a=a-x--//基于准则3
a=1-