Expressões Compostas de Atribuição

De acordo com a JLS, the result of the binary operation in a compound assignment expression is converted to the type of the left-hand variable, subjected to value set conversion to the appropriate standard value set (not an extended-exponent value set), and the result of the conversion is stored into the variable.

short a = 0;
int b = 5;

a = a + b; // errado, a + b não cabe em a
a += b; // certo, a + b é convertido para short antes da atribuição para a

Em outras palavras, a += b corresponde a (short)(a + b) ou E1 op= E2 = (T)((E1) op (E2)) onde T é o tipo de E1, exceto que E1 é avaliado apenas uma vez.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s