变量前面的减号会使第一个变量变为负数吗?

时间:2019-06-25 21:05:07

标签: java

要求我们使用int变量使答案等于20。我们只应更改加号和减号的位置。他们在整数a前面有一个减号。那会使int变成负数吗?

我已经搜索了答案,但是我的Googlefu没有达到标准。

public static int a = 1;
public static int b = 3;
public static int c = 9;
public static int d = 27;

public static void main(String[] args) {

    int result = - a + b - c + d;
}

2 个答案:

答案 0 :(得分:4)

在表达式中:

- a + b - c + d

共有3种不同的运算符,从左到右:

通常,一元运算符的优先级高于二元运算符,因此此表达式等效于:

(( (- a) + b) - c) + d

因此,一元-适用于a。根据上面的链接规范:

  

在运行时,一元减表达式的值是操作数提升值的算术求反。

因此,它不会使a变为负数,它会导致表达式的值为a的否定。这恰好是负数,因为a具有正值。但是,它不会制作 aa保持不变。

答案 1 :(得分:0)

真正使 为负数的唯一方法是重新分配它:

a = -a;

有关更详细的答案,请查看Java语言规范,在这里您可以找到有关如何在Java中对运算符和表达式求值的详细信息(在您的情况下为https://docs.oracle.com/javase/specs/jls/se12/html/jls-15.html#jls-15.15.4