Dans notre code java j'ai encountred une ligne que je comprends pourquoi didnot
total = + - valFromsp; ou totale = - + valFromsp; j'ai donc écrit petit programme et attacha ici.
public class Test {
public static void main (String... arg) {
int total = 20;
int valFromsp = 60 ;
total = + - valFromsp;
System.out.println(total); // prints -60
}
}
Cela signifie simplement ceci:
total = -valFromsp;
La ligne de code est une instruction d'affectation avec l'être d'expression côté droit + - valFromsp
. Qu'est - ce que cela + - valFromsp
signifie? Si l' on ajoute entre parenthèses, il devient +(-(valFromsp))
.
L'opérateur unaire -
fonctionne sur l'opérande valFromsp
rendant -60
. Et puis l' +
opérateur unaire fonctionne sur -60
de ne rien faire pour lui.
Les +
et les -
opérateurs unaires sont spécifiés dans §15.15 de la spécification de langage Java:
Les opérateurs +, -, ++, -, ~, et l'opérateur de cast (§15.16) sont appelés les opérateurs unaires.
UnaryExpression: PreIncrementExpression PreDecrementExpression + UnaryExpression - UnaryExpression UnaryExpressionNotPlusMinus
L'utilisation de l' +
opérateur unaire est précisée dans le §15.15.3 :
Promotion numérique unaire ( §5.6.1 ) est effectuée sur l'opérande. Le type de l'expression plus unaire est le type promu de l'opérande. Le résultat de l'expression plus unaire est pas une variable, mais une valeur, même si le résultat de l'expression d'opérande est une variable.
Mais puisque vous utilisez int
s, qui ne subit pas la promotion numérique unaire, +
ne fait rien. Même si vous utilisez byte
, short
ou char
, le +
fera encore rien, parce que l' -
opérateur unaire fait aussi la promotion. Donc , il n'y a vraiment aucune raison d'utiliser les deux +
et -
en même temps.
Je suggère que vous venez de le changer pour:
total = -valFromsp;
pour éviter toute confusion à l'avenir.