В чем разница между + = и = +? - PullRequest
13 голосов
/ 30 мая 2010

В чем разница между + = и = +? В частности, в Java, но в целом также.

Ответы [ 8 ]

30 голосов
/ 30 мая 2010
i += 4;

означает

i = i + 4;  // increase i by 4.

Пока

i =+ 4;

эквивалентно

i = +4;   // assign 4 to i. the unary plus is effectively no-op.

(См. http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.15.3 о том, что делает унарный +.)

10 голосов
/ 30 мая 2010

+= - это оператор, который увеличивает левую часть присваивания на значение правой части и присваивает его обратно переменной слева. =+ не является оператором, но на самом деле это два оператора: оператор присваивания = и унарный оператор плюс + (положительный), который обозначает значение справа, является положительным. Это на самом деле избыточно, потому что значения положительны, если они не отменяются с унарным минусом. Вам следует избегать конструкции =+, так как это скорее вызовет путаницу, чем какое-либо действительное благо.

7 голосов
/ 30 мая 2010

+= - это получение и приращение:

a += 5; // adds 5 to the value of a

=+ сам по себе не является действительным идентификатором, но может отображаться при использовании унарного оператора +:

a =+ 5; // assigns positive five to a
5 голосов
/ 30 мая 2010

= + не является оператором. Знак + является частью числа, следующего за оператором присваивания.

int a = 4; int b = 4;

а + = 1; b = + 1;

System.out.println ("a =" + a + ", b =" + b);

Это показывает, насколько важно правильно отформатировать код, чтобы показать намерение.

3 голосов
/ 30 мая 2010

+= - это способ увеличения числа или String в Java. Э.Г.

int i = 17;
i += 10;  // i becomes 27 now.

Нет оператора =+. Но если вы делаете i =+ 10;, это означает, что i равно +10, что равно просто 10.

3 голосов
/ 30 мая 2010

В частности, в Java, но в целом также.

В Java x += <expr>; эквивалентно x = x + ( <expr> );, где оператор + может быть арифметическим оператором сложения или оператором конкатенации строк, в зависимости от типа x. С другой стороны, x =+ <expr>; - это действительно уродливый способ записи x = + <expr>;, где + - унарный оператор плюс ... то есть нет операции для числовых типов и в противном случае ошибка компиляции.

Вопрос не отвечает в общем случае. Некоторые языки поддерживают оператор «+ =», а другие нет. Аналогично, некоторые языки могут поддерживать оператор «= +», а другие - нет. А некоторые языки могут позволять приложению «перегружать» одного или другого оператора. Просто нет смысла спрашивать, что означает оператор в целом.

2 голосов
/ 30 мая 2010

Я не знаю, что вы подразумеваете под "в целом", но в ранних версиях языка C (откуда и произошла большая часть синтаксиса Java, через C ++), =+ был исходным синтаксисом для того, что позже стал +=, т.е. i =+ 4 был эквивалентен i = i + 4.

CRM (Справочное руководство по C) - это документ, который описывает язык C с =+, =-, =>> и т. Д.

1 голос
/ 18 мая 2015

Если у вас есть + = b, это означает, что вы добавляете b к тому, что уже есть в a. Однако если вы делаете a = + b, вы назначаете + b для a.

int a=2;
int b=5;
a+=b;
System.out.println(a); //Prints 7

a=2;
b=5;
a=+b;
System.out.println(a); //Prints 5
...