..
Què és la promoció numèrica? Aquesta és una operació molt comuna en un programa i correspon a una conversió implícita d'operands (per exemple, el sumand) associat a un operador numèric (per exemple, "+" indica que l'addició).
Aquesta conversió és necessària sempre que els operands no coincideixen exactament amb el tipus de dades que s'espera per a l'operació. En alguns casos, la conversió ha de ser explícit (per exemple, amb un elenc ) i per tant la responsabilitat del programador.
En altres casos, especialment en el cas dels més avançats llenguatges de programació i distribució (d'ara endavant, ens referirem en particular en el llenguatge Java), la conversió es realitza automàticament, de manera que implícitament. En aquest cas, és possible parlar de promoció numèrica.
Podem distingir dos tipus principals de promoció numèrica: la promoció unaris numèric i promoció numèrica binària, que difereixen substancialment en la naturalesa de l'aritmètica en l'operació (unari o binari). Anem a examinar les dues vessants, de manera que assegureu-vos de donar uns quants exemples breus de codi Java.
Vegem un exemple:
byte b = 2;
int a [] = new int [b];
Caràcter c = '\ u0001';
a [c] = 1;
a [0] = c;
En aquest cas, encara que molt simple, podem identificar tres exemples de promoció numèrica unària. El primer és l'educació int a [] = new int [b]. La mida de la matriu de fet haurien d'estar representats per un nombre enter (variable int), mentre que b és una variable de tipus byte.
Més tard, anem a reflexionar sobre l'educació [c] =- 1. En aquest cas, s'usa per a un índex de 'arrays, un cop més, no un paràmetre de tipus sencer, però (en aquest cas) de tipus de caràcters. De la mateixa manera, la següent declaració a [0] =- 0 s'assigna a la posició de la "matriu a un valor de tipus caràcter i no de tipus int.
Observem en primer lloc que s'associa amb la conversió d'operador d'assignació'("="), llavors un operador unari, que s'associa amb un sol operant. Heus aquí per què podem parlar de promoció numèrica unària. Com el compilador s'encarrega de la conversió de manera implícita associada amb les operacions descrites?
En els tres casos, la conversió pot ser descompost en dos passos elementals. En primer lloc, un tipus de conversió es du a terme unboxing, és a dir, les dades (en aquest cas el byte o caràcter) es converteix en el corresponent tipus de dades primitius (byte i char, respectivament).
En aquest punt es procedeix a una segona fase de la conversió: en els tres casos sota consideració és una conversió d'ampliació primitiva. En resum, no hi ha pèrdua d'informació i, de fet, el nou tipus de dades triat (int) és sobreabundant pel que fa a la informació s'emmagatzemi (continguda en la variable b, c, o de tipus de tipus byte,). Per aquesta raó, el compilador pot fer la conversió a tu mateix.
El èmfasi que l'única i veritable conversió que es poden realitzar de manera implícita en el context de la promoció numèrica són els esmentats. De fet, hi ha també la possibilitat d'una identitat de conversió de tipus, però manté el tipus de dades de la variable en qüestió i per tant d'interès principalment teòric.
| |
Curs de Linux
Guia completa de codi obert del sistema. A partir de 49 €. |
| |
Curs de PHP
Cicle complet per a la creació de llocs web dinàmics. A partir de 49 €. |
| |
Curs de Ruby i Ruby On Rails
Creació d'aplicacions de programari i la web amb Ruby i RoR. A partir de 39 €. |