dbo:abstract
|
- Augmented assignment (or compound assignment) is the name given to certain assignment operators in certain programming languages (especially those derived from C). An augmented assignment is generally used to replace a statement where an operator takes a variable as one of its arguments and then assigns the result back to the same variable. A simple example is x += 1 which is expanded to x = x + 1. Similar constructions are often available for various binary operators. In general, in languages offering this feature, most operators that can take a variable as one of their arguments and return a result of the same type have an augmented assignment equivalent that assigns the result back to the variable in place, including arithmetic operators, bitshift operators, and bitwise operators. (en)
- Atribuição ampliada (ou atribuição composta) são certos 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 x, adicionar 1 a ele, e armazenar o resultado da adição na variável x". Por mais simples que pareça, esta operação possuir uma ineficiência, na medida em que a localização da variável x deve ser pesquisada duas vezes se o compilador não reconhecer as duas partes da expressão como idênticas: x 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 x 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 <pre>Load xAdd 1Store x</pre> e o mesmo código poderia ser gerado para ambas as formas. Mas se há um código op especial, poderia ser <pre> MDM x,1</pre> 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 é <pre>x += expressão</pre> e não haverá códigos op especiais para auxiliar. Ainda há a possibilidade que se x for uma entidade complexa o compilador será estimulado a evitar duplicação ao acessar x e, obviamente, se x 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 <pre>NomeLongo:=x + sqrt(NomeLongo)*7;</pre> seria <pre>NomeLongo:=x + sqrt(~)*7;</pre> e assim por diante. Isto é mais geral que apenas x:=~ + 1;. Produzir código otimizado continuaria sendo a competência do compilador. (pt)
- 增量赋值(Augmented assignment)或称复合赋值(compound assignment)是在一些编程语言中的一类赋值运算符。通常用于替代一条语句,其中的运算符把变量作为一个运算数,再把结果赋值给同一变量。例如x += 1可展开为x = x + (1)。常适用于算术运算符、移位运算符、位操作运算符等。 (zh)
|