+= will do an automatic cast, so the result will be casted to type char. Therefore, compile fine. But if just c = c + i, since numerical expressions always result in at least an int-sized result, so it can't comile. It can compile, if you change it to c = (char)(c + i)