Articles

C-Type Casting

advertenties

het omzetten van een datatype in een ander staat bekend als type casting of, type-conversie. Bijvoorbeeld, als je een ‘long’ waarde wilt opslaan in een eenvoudig geheel getal dan kun je cast ‘long’ intypen naar ‘int’. U kunt converteren van de waarden van het ene type naar het andere, expliciet het gebruik van het cast-operator als volgt:

(type_name) expression

kijk naar het volgende voorbeeld, waar de cast-operator veroorzaakt de verdeling van een integer-variabele door een ander moet worden uitgevoerd als een floating-point operation −

#include <stdio.h>main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean );}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, het levert het volgende resultaat:

Value of mean : 3.400000

hierbij dient opgemerkt te worden dat de cast-operator heeft voorrang op de afdeling, dus de waarde van de som wordt eerst geconverteerd naar het type dubbel en tot slot krijgt gedeeld door telling die een dubbele waarde oplevert.

type conversies kunnen impliciet zijn, wat automatisch door de compiler wordt uitgevoerd, of het kan expliciet worden gespecificeerd door het gebruik van de cast operator. Het wordt beschouwd als een goede programmeerpraktijk om de cast operator te gebruiken wanneer typeconversies nodig zijn.

Integer promotie

Integer promotie is het proces waarbij waarden van het integer type “kleiner” dan Int of niet-ondertekende int worden geconverteerd naar int of niet-ondertekende int. Beschouw een voorbeeld van het toevoegen van een teken met een geheel getal −

#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 );}

wanneer de bovenstaande code is gecompileerd en uitgevoerd, produceert het volgende resultaat −

Value of sum : 116

Hier is de waarde van sum 116 omdat de compiler integer promotie doet en de waarde van ‘c’ converteert naar ASCII voordat de eigenlijke optelling wordt uitgevoerd.

gebruikelijke rekenkundige conversie

de gebruikelijke rekenkundige conversies worden impliciet uitgevoerd om hun waarden op een gemeenschappelijk type uit te zetten. De compiler voert eerst integer promotie uit; als de operanden nog verschillende types hebben, dan worden ze geconverteerd naar het type dat het hoogst in de volgende hiërarchie voorkomt −

de gebruikelijke rekenkundige conversies worden niet uitgevoerd voor de toegewezen operators, noch voor de logische operators && en ||. Neem het volgende voorbeeld om het concept te begrijpen −

#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 );}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, produceert het volgende resultaat:

Value of sum : 116.000000

Hier is het eenvoudig te begrijpen dat de eerste c wordt geconverteerd naar een geheel getal is, maar als de laatste waarde is dubbel, gebruikelijke rekenkundige conversie van toepassing is en de compiler zet ik en ‘ c ‘ in ‘float’ en voegt u ze toe naar een ‘float’ resultaat.

advertenties