I'm working with an esp8266 and want to have it default to an access point when it cannot connect to a wifi network. I'm using chriscook8's example from github here.

chriscook8 uses "+=" in several places and I can't find an explanation of what that means.

Here is an example from setup():

void setup() {
  // read eeprom for ssid and pass
  Serial.println("Reading EEPROM ssid");
  String esid;
  for (int i = 0; i < 32; ++i)
    esid += char(EEPROM.read(i));  //<- here

What does += do?

  • 5
    This belongs on stackoverflow.com, not here. Stackoverflow is the site for programming questions, as this asks about C++'s syntax. Jun 26, 2016 at 20:54
  • Google for C++ operators
    – phuclv
    Jun 27, 2016 at 7:43

3 Answers 3


It adds the value or variable on the right to the variable on the left and assigns the result to the variable on the left.

A += B

is the same as:

A = A + B

It's short-hand.

In the case of a String it concatenates the right hand item on to the end of the left hand item.

  • Thank you. Is it considered better form to use +=?
    – acpilot
    Jun 26, 2016 at 16:57
  • It makes no real difference. It's just quicker to type. Also it's a historical thing - when storage space was at a premium saving bytes here and there could make a difference. I recall at University I had a maximum storage space of 4MB for all my work on the servers. Saving space like that was good.
    – Majenko
    Jun 26, 2016 at 16:58
  • 1
    I'm not sure it's correct to say that it "assigns the result to the value on the left. A "value" is the result of evaluation; you cannot assign anything to a value. The right word would be variable, or maybe location. Jun 26, 2016 at 22:06
  • The computer will not function differently with A += 1 or A = A + 1, but the code is simply easier to read. If your variables are more descriptive, say AmountOfDaysWorked, then AmountOfDaysWorked += 1 is easier to read than AmountOfDaysWorked = AmountOfDaysWorked + 1. It gets worse if you have to add a variable to another variable.
    – Nelson
    Jun 27, 2016 at 0:45
  • @Sahuagin: You're right that value is not precisely correct. But neither is variable: I can assign to str->field, but this is not a variable; it is a (compound) expression. The term you are looking for is lvalue ("ell-value"), which is merely "something that can appear on the left-hand side of an assignment expression." (Circular? Perhaps. But that is the term.)
    – wchargin
    Jun 27, 2016 at 5:36

+= is a common programming shortcut. An example: (pseudo-code)

num1 = 7
num2 = 15
#these two lines are exactly the same
num1 += num2
num1 = num1 + num2

+= is extremely useful for increasing the value of a variable by another variable. It also works similarly with -=, *=, and /=

  • The assignment versions of binary operators include the arithmetic, bitwise logical, and shift operators: *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, and |=. Expr1 <opr>= Expr2 is equivalent to Expr1 = Expr1 <opr> Expr2, except that Expr1 will only be evaluated once (important if Expr1 has side effects).
    – JRobert
    Jun 26, 2016 at 18:51

In the earliest days of the C language (I'm talking late 60's here), the compilers did not do much (if any) optimization, and a lot of the constructs in C were put in so that a programmer could get a more optimized program by using hints like +=. So, in those days, A = A + 5 generated three PDP11 instructions, while A += 5 was only a single PDP11 instruction. That meant that most programmers learned to write it that way. But because it was more concise and to many also more readable, the C constructs with <op>= have made it into most modern languages.

  • 1
    But as other comments have said, general programming questions have their own StackExchange sites...actually several of them...
    – MAP
    Jun 27, 2016 at 0:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.