..
O que é a promoção numérica? Esta é uma operação muito comum em um programa e corresponde a uma conversão implícita de operandos (por exemplo, o adendo) associado a um operador numérico (por exemplo, "+" indica que a adição).
Esta conversão é necessária sempre que os operandos não correspondem exatamente o tipo de dados que é esperado para a operação. Em alguns casos, a conversão deve ser explícito (por exemplo, usando um molde ) e, portanto, da responsabilidade do programador.
Em outros casos, especialmente no caso de linguagens de programação mais avançadas e distribuídos (daqui em diante vamos nos referir em particular à linguagem Java), a conversão é feita automaticamente, assim, implicitamente. Neste caso, é possível falar de promoção numérico.
Podemos distinguir dois tipos principais de promoção numérico: promoção numérico unários e promoção numérico binário, que diferem substancialmente da natureza da aritmética envolvidos na operação (unário ou binário). Vamos dar uma olhada em ambas as vertentes, tendo o cuidado de também fornecer alguns breves exemplos de código Java.
Vamos ver um exemplo:
byte b = 2;
int a [] = new int [b];
Caráter c = '\ u0001';
a [c] = 1;
a [0] = c;
Neste caso, embora muito simples, podemos identificar três exemplos de promoção numérico unários. O primeiro é a educação int a [] = new int [b]. O tamanho da matriz fato "deve ser representado por um inteiro (variável int), enquanto b é uma variável do tipo byte.
Depois, vamos refletir sobre a educação [c] =- 1. Neste caso, ele é passado como um índice de "arrays, mais uma vez, e não um parâmetro do tipo inteiro, mas (neste caso) caractere de tipo. Da mesma forma, a próxima instrução a [0] =- c 0 dá a posição do array 'para um valor do tipo int e não de caráter.
Observamos que a primeira está associada com a conversão de "operador de atribuição ("="),, portanto, um operador unário, que está associado com apenas um operando. Aqui é por isso que podemos falar de promoção numérico unários. Como o compilador trata as conversões implicitamente associados com os passos?
Nos três casos, a conversão pode ser decomposto em duas etapas elementares. Primeiro é um tipo de conversão unboxing, ou seja, os dados (neste caso do tipo Byte ou Personagem) é convertido para o tipo de dados correspondente primitivos (byte char, respectivamente).
Neste ponto, proceder a uma segunda fase de conversão em todos os três casos sob consideração é uma conversão de ampliação primitivo. Em suma, não há perda de informação e de fato, o novo tipo de dados que você escolher (int) é abundante em relação ao armazenamento de informações (contidas na variável b, c ou do tipo Byte, tipo de personagem). Por esta razão, o compilador pode realizar a conversão de si mesmo.
Destacamos como as conversões só real que pode ser executada implicitamente no contexto da promoção numéricos são mencionados aqui. Há, de facto também a possibilidade de uma identidade de conversão de tipo, mas mantém o tipo de dados da variável em questão e, portanto, de interesse principalmente teórica.
| |
Linux (Curso)
Guia completo para open-source do sistema. A partir de 49 €. |
| |
PHP (Curso)
Curso completo para a criação de sites dinâmicos. A partir de 49 €. |
| |
Ruby e Ruby on Rails (Curso)
Criar aplicações de software e Web com Ruby e RoR. A partir de 39 €. |