..
Ce este promovarea numeric? Aceasta este o operatiune foarte comun într-un program şi corespunde la o conversie implicită de operanzi (de exemplu, addend) asociate cu un operator numeric (de exemplu, "+" indică faptul că adăugarea).
Această conversie este necesară ori de câte ori operanzii nu se potrivesc exact tipul de date care este de aşteptat pentru operaţie. În unele cazuri, de conversie trebuie să fie explicite (de exemplu, folosind o turnat ) şi este, prin urmare, responsabilitatea de programator.
În alte cazuri, în special în cazul de mai multe limbi de programare avansate şi distribuite (denumit în continuare ne vom referi în special la limbajul Java), conversia se face automat, astfel implicit. În acest caz, se poate vorbi de promovare numerice.
Putem distinge două tipuri principale de promovare numerică: promovarea unari numerice şi promovare numeric binar, care diferă în mod substanţial în natura aritmetice implicate în operaţiune (unar sau binar). Să ne uităm la ambele componente, având grijă să ofere, de asemenea, câteva exemple scurte de cod Java.
Să vedem un exemplu:
octet b = 2;
int a [] = new int [b];
Caracter c = '\ u0001';
pentru [c] = 1;
a [0] = c;
În acest caz, deşi foarte simplu, putem identifica trei exemple de promovare numerice unari. Primul este educaţia int a [] = new int [b]. Dimensiunea matrice fapt ar trebui să fie reprezentată de un număr întreg (int variabilă), în timp ce b este o variabilă de tip octet.
Apoi, să ne reflectăm asupra educaţiei [c] =- 1. În acest caz, este trecut ca un index de "tablouri, încă o dată nu, un parametru de tip întreg, dar (în acest caz) personaj de tip. În mod similar, declaraţia următoare a [0] =- c 0 dă poziţia matrice ", la o valoare de tip int şi nu caracterul.
Observăm mai întâi că este asociat cu conversie la operatorul de atribuire "("="),, prin urmare, un operator unar, care este asociat cu un singur operand. Iată de ce putem vorbi de promovare numerice unari. Cum compilatorul mânerele conversii implicit asociate cu măsurile?
În toate cele trei cazuri, conversia poate fi descompusă în două etape elementare. În primul rând este un tip unboxing de conversie, şi anume datele (în acest caz de tip sau Byte Caracter) este convertit într-un tip primitiv de date corespunzătoare (char byte, respectiv).
În acest moment se procedeaza la oa doua fază de conversie, în toate cele trei cazuri în cauză este o conversie lărgirea primitiv. Pe scurt, nu există nici o pierdere de informaţii şi, într-adevăr, noul tip de date pe care o alegeţi (int) este supraabundent în comparaţie pentru a stoca informaţii (conţinute în variabila b, sau c de tip Byte, tipul de caracter). Din acest motiv, compilatorul poate efectua o conversie tine.
Noi subliniem ca aceasta conversii numai reale care pot fi efectuate implicit în contextul promovării numerice sunt cele menţionate. Există, de fapt, de asemenea, posibilitatea de a o identitate tip de conversie, dar menţine tipul de date al variabilei în cauză şi, prin urmare, este de interes mai ales teoretic.
| |
Linux (Curs)
Ghid complet pentru open-source de sistem. De la 49 €. |
| |
PHP (Curs)
Ciclu complet pentru crearea de site-uri Web dinamice. De la 49 €. |
| |
Ruby şi Ruby on Rails (Curs)
Crearea aplicatii software si web cu Ruby şi RoR. De la 39 €. |