Atribuição ampliada
Atribuição ampliada (ou atribuição composta) são certos operadores em algumas linguagens de programação (especialmente aquelas derivadas de C). Uma atribuição ampliada geralmente é utilizada para substituir uma declaração onde um operador toma uma variável como um de seus argumentos e então atribui o resultado de volta à mesma variável.

Por exemplo, a seguinte declaração, ou alguma variação desta, pode ser encontrada em vários programas:

 x = x + 1

Isto significa "encontrar o número armazenado na variável codice_1, adicionar 1 a ele, e armazenar o resultado da adição na variável codice_1". Por mais simples que pareça, esta operação possuir uma ineficiência, na medida em que a localização da variável codice_1 deve ser pesquisada duas vezes se o compilador não reconhecer as duas partes da expressão como idênticas: codice_1 pode ser uma referência para algum lemento de arranjo ou possuir outra complexidade. Em comparação, a seguir está uma versão da atribuição ampliada:

 x += 1

Com esta versão, não há desculpa para a falha de compilador para gerar o código que procura a loca~lização da variável codice_1 apenas uma vez, e modifica-o no local, obviamente se o código de máquina suportar tal sequência. Por exemplo, se x for uma variável simples, a sequência de código da máquina pode ser algo como

codice_6

e o mesmo código poderia ser gerado para ambas as formas. Mas se há um código op especial, poderia ser

codice_7

significando "Modificar Memória" pela adição de 1 à x e um compilador adequado geraria o mesmo código para as duas formas. Alguns códigos de máquina oferecem operações INC e DEC (para adicionar ou subtrair unidade), outras podem permitir outas constantens além de um.

Geralmente, a forma é

codice_8

e não haverá códigos op especiais para auxiliar. Ainda há a possibilidade que se codice_1 for uma entidade complexa o compilador será estimulado a evitar duplicação ao acessar codice_1 e, obviamente, se codice_1 for um nome longo, haverá menos digitação exigida. Esta última foi a base da funcionalidade similar nos compiladores Algol oferecidos através dos sistemas Burroughts B6700, usando o símbolo tilda para suportar a variável que sendo atribuída, de modo que

codice_12

seria

codice_13

e assim por diante. Isto é mais geral que apenas codice_14. Produzir código otimizado continuaria sendo a competência do compilador.
None
operadores
UNK
Q9143
linguagens de programação
Concept
Q15777
C
Concept
Q10954303
variável
UNK
Q4820439
Atribuição ampliada
Concept
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+6^^http://www.w3.org/2001/XMLSchema#decimal
6
NUMBER
+7^^http://www.w3.org/2001/XMLSchema#decimal
7
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+8^^http://www.w3.org/2001/XMLSchema#decimal
8
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+6700^^http://www.w3.org/2001/XMLSchema#decimal
6700
NUMBER
+12^^http://www.w3.org/2001/XMLSchema#decimal
12
NUMBER
+13^^http://www.w3.org/2001/XMLSchema#decimal
13
NUMBER
+14^^http://www.w3.org/2001/XMLSchema#decimal
14
NUMBER
instance of