Přetypování

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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ů. +more 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

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(x); B *q = static_cast(z); // riskantní přetypování na potomka. B *r = dynamic_cast(z); // provede se kontrola a r bude nulové. +more int yi = reinterpret_cast(y);.

PHP

PHP explicitně nepoužívá deklarování typu proměnně. Její typ se určí tím co se do ní vloží. +more 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)StringFloatIntegerBoolean
String---Začíná-li číslem toto číslo, jinak nula. Když neobsahuje '. +more', 'e', nebo 'E'Začíná-li číslem toto číslo, jinak nula. Když neobsahuje '. ', 'e', nebo 'E'"" a "0"=false, ostatní True
FloatPřevede na řetězec---Ořízne se desetinná část0. 0=False, ostatní True
IntegerPřevede na řetězecPřevede se beze změny---0=False, ostatní True
Boolean1"false=0. 0 true=1. 0false=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

[url=http://www. sallyx. +moreorg/]www. sallyx. org[/url] * [url=https://web. archive. org/web/20130530004211/http://www. linuxsoft. cz/]www. linuxsoft. cz[/url] * [url=http://php. net/]php. net[/url] * [url=http://physics. ujep. cz/]physics. ujep. cz[/url] * [url=http://vyuka. eparo. cz/]vyuka. eparo. cz[/url].

Kategorie:Programování Kategorie:Operátory

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top