Přiřazování a přetypování
Přiřazovací příkaz je používán při práci s proměnnými i konstantami. Operátorem přiřazení je znak =, operátor == představuje relační operátor je rovno. Přiřazovací příkaz umožňuje přiřadit hodnotu nějakého výrazu jiné proměnné nacházející se vlevo od operátoru =. Výraz, který do proměnné přiřazujeme, musí mít nějakou hodnotu.a=10.0;
b=c+15*f;
znak='A';
Přiřazovací příkaz může být používán i při tvorbě logických podmínek. Začátečníka by neměla zmást následující konstrukce
if (a==(b=10));
představující dotaz, zda hodnota proměnné a je rovna hodnotě proměnné b,která je inicializována na 10.
Při přiřazovacích operacích dochází často ke konverzím mezi různými datovými typy. Tyto operace nazýváme přetypováním. Výsledkem přiřazení je změna datového typu proměnné. Existují dva typy přetypování:
Pro jinde uvedené datové typy bývá prováděna v následujícím pořadí:
byte->short->int->long->float->double.
float a=50;
double b=30;
b=a;//implicitní konverze
double->float->long->int->short->byte.
a=b;//ztráta přesnosti, nelze provést
a=(float)b;//explicitní konverze
Přetypování lze používat u OOP také při práci s rodičovskou a odvozenou třídou. Objekt rodičovské třídy označíme rodič, objekt odvozené třídy potomek. Potomek bývá zaměřen úžeji než rodič. Existují dvě možnosti přetypování:
Podrobněji se s nimi seznámíme v kapitole věnované objektově orientovanému programování. Podívejme se na situace, kdy do aritmetických operací vstupují operandy smíšeného typu, hovoříme pak o tzv. smíšených výrazech. Platí následující zákonitosti:
1. Pokud je jeden z operandů typu double, bude výsledkem operace datový typ double
2. Pokud je jeden z operandů typu oat, bude výsledkem operace datový typ oat
3. Pokud je jeden z operandů typu long, bude výsledkem operace datový typ long
Jejich cílem je realizace aritmetických operací tak, aby při nich došlo k co nejmenší ztrátě přesnosti. Pozor musíme dát u výrazů obsahujících zlomky, pokud čitatel i jmenovatel představují celočíselné hodnoty. Výsledek operace bude opět datového typu int.
int a=5;//int
int b=10;//int
int c=a/b;//výsledek=0
Výše uvedený zápis je z formálního hlediska špatným, neměl by být nikdy použit.
Správný je následující zápis, při kterém vznikne smíšený výraz:
int a=5.0;//double
int b=10;//int
int c=a/b;//výsledek=0.5;
Autor: Filip Koval