Concepto básico
Disculpe alguien sabe que significa esta expresión: c+=1; ó i+=c; gracias si alguien me puede decir ke significan o que hacen.
- YoMismo's blog
- Inicie sesión o regístrese para enviar comentarios
Disculpe alguien sabe que significa esta expresión: c+=1; ó i+=c; gracias si alguien me puede decir ke significan o que hacen.
Mi chavo, búscale bien :)
▼ Aquí está un video con una explicación del asunto:
Tutorial Java - 7 - Asignaciones Compuestas
Google es tu mejor amigo. Como dijo una vez José Manuel:
Ja, ja.
~~~
concepto viejo
Esto viene de C (y no sé si de antes, de hecho).
Estás haciendo suma y asignación en un solo paso.
es una manera más corta de decir
, pero la primera permite además al compilador optimizar a menos instrucciones en bytecode. Se puede hacer con casi todos los operadores:
,
,
e incluso con los de bits/boolean:
,
,
etc.
Es una abreviación de c =
Es una abreviación de
Y de
@jpaul es probable que YoMismo no supiera el nombre del término que tenía que buscar y parte de su búsqueda es precisamente preguntar aquí.
c+=1
Y de hecho los casos específicos de
y
tienen otra abreviación/optimización:
y
, y la variante
y
. Eso viene de C (o antes), y se traducía a una sola instrucción de ensamblador de incrementar un registro. La diferencia entre c++ y ++c es que c++ incrementa el registro pero devuelve el valor anterior, y ++c incrementa el registro y luego devuelve el valor (por lo que devuelve el valor ya incrementado). De modo que:
a vale 1, b vale 1 y c vale 3.
a += b, donde b es literal entero
Al parecer
es una especie de incremento en Java cuando
es un literal entero. A saber:
Java:
bytecode:
Obsérvese que:
En realidad, es
~~~
Y algo más
Cuando utilizas tipos de datos diferentes en los dos operandos generalmente se hace un cast al tipo de dato al que le estas asignando el resultado de la operación
Para más info checate esto
Algol 68
De acuerdo con Dennis M. Ritchie (1), Ken Thompson se basó en la notación de Algol 68 para escribir los operadores de asignación compuestos (incluidos primeramente en el lenguaje B).
Por ejemplo, en Algo 68 existía el operador plusab (2). Así, x plusab y en Algol 68 se escribía como
, que en su forma expandida era
.
Y, siguiendo con Dennis M. Ritchie, fue Ken Thompson quien inventó los operadores de incremento
y decremento
, pero estos fueron incluidos en C.
Notas
~~~
Gracias
Gracias