C – Typ Odlévání
Převod jednoho datového typu na jiný je známý jako přetypování, nebo typ konverze. Chcete-li například uložit hodnotu „dlouhá“ do jednoduchého celého čísla, můžete zadat obsazení „dlouhá“ na „int“. Můžete převést hodnoty z jednoho typu na jiný explicitně pomocí obsazení provozovatel takto −
(type_name) expression
Vezměme si následující příklad, kde obsadil provozovatel příčiny rozdělení jedné celočíselné proměnné tím, že další mají být provedeny jako plovoucí-bod operací −
#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}
výše uvedený kód je sestaven a proveden, to vytváří následující výsledek −
Value of mean : 3.400000
Je třeba poznamenat, tady, že obsazení operátor má přednost před dělením, takže hodnota součtu je nejprve převeden na typ double a konečně to dostane děleno počtem dává dvojí hodnotu.
typové konverze mohou být implicitní, které kompilátor provádí automaticky, nebo je lze explicitně specifikovat pomocí operátoru cast. Za správnou programovací praxi se považuje použití operátoru obsazení, kdykoli jsou nutné konverze typu.
celočíselná propagace
celočíselná propagace je proces, při kterém jsou hodnoty celočíselného typu „menší“ než int nebo unsigned int převedeny na int nebo unsigned int. Vezměme si příklad přidání znaku s celé číslo −
#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum );}
výše uvedený kód je sestaven a proveden, to produkuje následující výsledek −
Value of sum : 116
Tady, hodnota součtu je 116, protože kompilátor dělá celé číslo propagace a konverzi hodnoty “ c “ do ASCII před provedením skutečný kromě operace.
Běžné Aritmetické Konverze
obvyklé aritmetické převody jsou implicitně provádí na obsazení jejich hodnoty na společný typ. Kompilátor nejprve provede celočíselnou propagaci; pokud operandy stále mají různé typy, pak jsou převedeny na typ, který se zobrazí nejvyšší v následující hierarchii −
obvyklé aritmetické převody jsou prováděny pro operátory přiřazení, ani za logické operátory &&||. Vezměme si následující příklad pochopit koncept −
#include <stdio.h>main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum );}
výše uvedený kód je sestaven a proveden, to produkuje následující výsledek −
Value of sum : 116.000000
Tady, to je jednoduché pochopit, že první c se převede na celé číslo, ale jako konečné hodnoty je double, obvyklé aritmetické konverze platí a kompilátor převede i a c do ‚float‘ a dodává jim dávat ‚float‘ výsledek.
Leave a Reply