C-typ gjutning
konvertera en datatyp till en annan är känd som typ gjutning eller, typ-konvertering. Om du till exempel vill lagra ett långt värde i ett enkelt heltal kan du skriva cast ’long’ till ’int’. Du kan konvertera värdena från en typ till en annan uttryckligen med cast −operatören enligt följande-
(type_name) expression
Tänk på följande exempel där Cast −operatören gör att uppdelningen av en heltalsvariabel av en annan utförs som en flytpunktsoperation −
#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}
När ovanstående kod sammanställs och exekveras ger den följande resultat –
Value of mean : 3.400000
det bör noteras här att Cast-operatören har företräde framför Division, så värdet av summan konverteras först till typ dubbel och slutligen blir det dividerat med räkning som ger ett dubbelt värde.
typkonverteringar kan vara implicita som utförs av kompilatorn automatiskt, eller det kan specificeras uttryckligen genom användning av Cast-operatören. Det anses vara god programmeringspraxis att använda cast-operatören när typkonverteringar är nödvändiga.
Heltalskampanj
Heltalskampanj är den process genom vilken värden av heltalstyp ”mindre” än int eller osignerad int konverteras antingen till int eller osignerad int. Tänk på ett exempel på att lägga till ett tecken med ett heltal –
#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 );}
När ovanstående kod sammanställs och exekveras ger den följande resultat −
Value of sum : 116
här är summan av summan 116 eftersom kompilatorn gör heltalskampanj och konverterar värdet av ’c’ till ASCII innan den faktiska tilläggsoperationen utförs.
vanlig aritmetisk konvertering
de vanliga aritmetiska omvandlingarna utförs implicit för att kasta sina värden till en gemensam typ. Kompilatorn utför först heltalskampanj; om operanderna fortfarande har olika typer konverteras de till den typ som visas högst i följande hierarki −
de vanliga aritmetiska omvandlingarna utförs inte för uppdragsoperatörerna, inte heller för de logiska operatörerna && och ||. Låt oss ta följande exempel för att förstå konceptet −
#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 );}
När ovanstående kod sammanställs och exekveras ger den följande resultat −
Value of sum : 116.000000
Här är det enkelt att förstå att första c konverteras till heltal, men eftersom det slutliga värdet är dubbelt gäller vanlig aritmetisk konvertering och kompilatorn konverterar i och c till ”float” och lägger till dem ger ett ’float’ resultat.
Leave a Reply