Přetypování je v informatice operace znamenající převedení jednoho datového typu na jiný.
Implicitní a explicitní přetypování
Implicitní (automatické - koerce) Toto přetypování se provede automaticky pokud se původní datový typ "vejde" do datového typu cíleného objektu nebo převodem nedojde ke ztrátě informace. Toto nastává například pokud jsou v jedné aritmetické operaci přítomny operandy různých typů. V této situaci se operand s nižší prioritou konvertuje na operand s prioritou vyšší (nižší rozsah→vyšší rozsah).
příklad pro jazyk C: int a = 3; double b = 2.123; double c; c = a + b; // a se převede na double hodnotu 3.000
+ Tabulka priorit (od nejnižší k nejvyšší) int unsigned int long unsigned long float double long double
Explicitní (vynucené) Vynucené přetypování se použije tam, kde není implicitní převod možný. Nastává zde problém se smysluplností těchto převodů a zároveň je třeba dát pozor na ztrátu informace, ke které při této konverzi dochází.
příklad pro jazyk C: double a = 5.3; int b; b = (int)a; // do proměnné b se uloží oříznuté a, tj. 5
Při explicitním přetypování je třeba dbát zřetel na to, aby cílený typ dokázal pojmout informaci převáděného typu. V tom případě bude výsledkem nedefinovaná hodnota. char y = 'd'; int a = 256; y = (char) a;
C/C++ Přetypování v C/C++ se provádí tak, že se před výraz napíše do závorek typ, na který chceme přetypovat. int a = 60, b = 7; float c, d; char ch = 'x';
c = a / b; d = (float) a / b; printf("Celočíselný výsledek: %+4.3f\n", c); printf("Racionalni deleni: %+4.3f\n", d); printf("ASCII kod znaku %c je %i\n", ch, (int) ch);
V C++ se pro přetypování ukazatelů používají operátory static_cast, dynamic_cast a reinterpret_cast. A *x = new B(); // třída A je předek třídy B B *y = new B(); A *z = new A(); B *p = static_cast<B *>(x); B *q = static_cast<B *>(z); // riskantní přetypování na potomka. B *r = dynamic_cast<B *>(z); // provede se kontrola a r bude nulové. int yi = reinterpret_cast<int>(y);
PHP PHP explicitně nepoužívá deklarování typu proměnně. Její typ se určí tím co se do ní vloží. PHP rozlišuje čtyři základní typy proměnných: Integer, Float, Boolean a String. K přetypování slouží příkaz settype(), který nenávratně konvertuje proměnnou na jiný typ. Společně s příkazem settype() existuje příkaz gettype(), který vrací typ proměnné.
Nový →Původní (dolu) String Float Integer Boolean String --- Začíná-li číslem toto číslo, jinak nula. Když neobsahuje '.', 'e', nebo 'E' Začíná-li číslem toto číslo, jinak nula. Když neobsahuje '.', 'e', nebo 'E' "" a "0"=false, ostatní True Float Převede na řetězec --- Ořízne se desetinná část 0.0=False, ostatní True Integer Převede na řetězec Převede se beze změny --- 0=False, ostatní True Boolean false="" true="1" false=0.0 true=1.0 false=0 true=1 ---
Java U Javy se implicitní přetypování provádí automaticky stejně jako v C. float a = 25; double b = 13; b = a; //implicitní konverze
Explicitní konverze musí být inicializována programátorem ve zdrojovém kódu, jinak se příkaz vyhodnotí jako chybový. float a = 6; double b = 4; a = (float)b; //explicitní konverze
Externí odkazy www.sallyx.org www.linuxsoft.cz php.net physics.ujep.cz vyuka.eparo.cz
Kategorie:Programování Kategorie:Operátory