Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Type gieten in C:typeconversie, impliciet, expliciet met voorbeeld

Wat is typecasting in C?

Typecasting is het omzetten van het ene gegevenstype in een ander. Het wordt ook wel dataconversie of typeconversie in C-taal genoemd. Het is een van de belangrijke concepten die zijn geïntroduceerd in 'C'-programmering.

'C'-programmering biedt twee soorten typegietbewerkingen:

  1. Impliciet type casting
  2. Expliciete typecasting

Impliciet type casting

Impliciete typecasting betekent conversie van gegevenstypen zonder de oorspronkelijke betekenis te verliezen. Dit type typecasting is essentieel wanneer u gegevenstypes wilt wijzigen zonder het veranderen van de betekenis van de waarden die in de variabele zijn opgeslagen.

Impliciete typeconversie in C gebeurt automatisch wanneer een waarde wordt gekopieerd naar het compatibele gegevenstype. Tijdens de conversie worden strikte regels voor typeconversie gehanteerd. Als de operanden van twee verschillende gegevenstypen zijn, wordt een operand met een lager gegevenstype automatisch geconverteerd naar een hoger gegevenstype. Dit type typeconversie is te zien in het volgende voorbeeld.

#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

Uitvoer:

10
10

  1. In het gegeven voorbeeld hebben we een variabele van het korte gegevenstype gedeclareerd met een waarde die is geïnitialiseerd als 10.
  2. Op de tweede regel hebben we een variabele van het datatype int gedeclareerd.
  3. Op de derde regel hebben we de waarde van variabele s toegewezen aan de variabele a. Op de derde regel wordt impliciete typeconversie uitgevoerd als de waarde van variabele s die van het korte gegevenstype is, wordt gekopieerd naar de variabele a die van het gegevenstype int is.

Teken naar Int converteren

Beschouw het voorbeeld van het toevoegen van een in ASCII gedecodeerd teken met een geheel getal:

#include <stdio.h>
main() {
   int  number = 1;
   char character = 'k'; /*ASCII value is 107 */
   int sum;
   sum = number + character;
   printf("Value of sum : %d\n", sum );
}

Uitvoer:

 Value of sum : 108

Hier heeft de compiler een integer-promotie gedaan door de waarde van 'k' naar ASCII te converteren voordat de daadwerkelijke optelbewerking wordt uitgevoerd.

Rekenkundige conversiehiërarchie

De compiler gaat eerst verder met het promoveren van een karakter tot een geheel getal. Als de operanden nog steeds verschillende gegevenstypen hebben, worden ze geconverteerd naar het hoogste gegevenstype dat in het volgende hiërarchiediagram wordt weergegeven:

Rekenkundige conversiehiërarchie

Bekijk het volgende voorbeeld om het concept te begrijpen:

#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

Uitvoer:

 sum = 120.000000

Allereerst wordt de variabele c geconverteerd naar integer, maar de compiler converteert num en c in "float" en voegt ze toe om een ​​"float" resultaat te produceren.

Belangrijke punten over impliciete conversies

  • Impliciete type conversie wordt ook wel standaard type conversie genoemd. We vereisen geen trefwoorden of speciale uitspraken bij impliciete typecasting.
  • Het converteren van een kleiner gegevenstype naar een groter gegevenstype wordt ook wel typepromotie genoemd . In het bovenstaande voorbeeld kunnen we ook zeggen dat de waarde van s wordt gepromoveerd tot het type integer.
  • De impliciete typeconversie gebeurt altijd met de compatibele gegevenstypen.

We kunnen geen impliciete typecasting uitvoeren op de gegevenstypen die niet compatibel zijn met elkaar, zoals:

  1. Als u float naar een int converteert, wordt het breukgedeelte afgekapt, waardoor de betekenis van de waarde verloren gaat.
  2. Als u dubbel naar zwevend converteert, worden de cijfers naar boven afgerond.
  3. Het converteren van lange int naar int zal leiden tot het wegvallen van overtollige bits van hoge orde.

In alle bovenstaande gevallen, wanneer we de gegevenstypen converteren, verliest de waarde zijn betekenis. Over het algemeen wordt het verlies van betekenis van de waarde gewaarschuwd door de compiler.

'C'-programmering biedt een andere manier van typecasting, namelijk expliciete typecasting.

Expliciet type casting

Bij impliciete typeconversie wordt het gegevenstype automatisch geconverteerd. Er zijn enkele scenario's waarin we typeconversie moeten forceren. Stel dat we een variabele div hebben die de verdeling van twee operanden opslaat die zijn gedeclareerd als een int-gegevenstype.

 int result, var1=10, var2=3;
result=var1/var2;

In dit geval zal, na de deling die is uitgevoerd op variabelen var1 en var2, het resultaat dat is opgeslagen in de variabele "resultaat" een geheel getal zijn. Telkens wanneer dit gebeurt, verliest de waarde die is opgeslagen in de variabele "resultaat" zijn betekenis omdat het geen rekening houdt met het breukdeel dat normaal wordt verkregen bij de deling van twee getallen.

Om de typeconversie in dergelijke situaties te forceren, gebruiken we expliciete typecasting.

Het vereist een type casting-operator. De algemene syntaxis voor typecastbewerkingen is als volgt:

(type-name) expression

Hier,

  • De typenaam is het standaard 'C' taalgegevenstype.
  • Een uitdrukking kan een constante, een variabele of een werkelijke uitdrukking zijn.

Laten we een programma schrijven om te demonstreren hoe je in C typt met expliciete typecasting.

#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

Uitvoer:

Value of a is 1.200000
Value of b is 2

  1. We hebben een variabele 'a' van het type float geïnitialiseerd.
  2. Vervolgens hebben we nog een variabele 'b' van het gegevenstype integer. Aangezien de variabele 'a' en 'b' van verschillende gegevenstypen zijn, staat 'C' het gebruik van een dergelijke uitdrukking niet toe en zal er een fout optreden. In sommige versies van 'C' wordt de uitdrukking geëvalueerd, maar is het resultaat niet gewenst.
  3. Om dergelijke situaties te voorkomen, hebben we de variabele 'a' van het type float getypecast. Door gebruik te maken van expliciete type casting methoden, hebben we float succesvol omgezet in data type integer.
  4. We hebben de waarde 'a' afgedrukt, wat nog steeds een float is
  5. Na typecasting is het resultaat altijd een geheel getal 'b.'

Op deze manier kunnen we expliciete typecasting implementeren in C-programmering.

Samenvatting

  • Typecasting wordt ook wel typeconversie genoemd
  • Het betekent het omzetten van het ene gegevenstype in het andere.
  • Het omzetten van een kleiner gegevenstype in een groter type wordt ook wel typepromotie genoemd.
  • Er zijn twee typen typeconversie:impliciete en expliciete typeconversie in C.
  • Impliciete typeconversie werkt automatisch wanneer het compatibele gegevenstype wordt gevonden.
  • Expliciete typeconversie vereist een typecast-operator.

Houd rekening met de volgende regels voor de programmeerpraktijk bij het omgaan met verschillende gegevenstypen om gegevensverlies te voorkomen:

  • Gehele getallen moeten worden geconverteerd naar zwevend.
  • Float-types moeten worden geconverteerd naar double.
  • Tekentypen moeten worden geconverteerd naar een geheel getal.

C Taal

  1. C# Type conversie
  2. C++ Type-conversie
  3. Python Type Conversie en Type Casting
  4. Java Type Casting
  5. Wat moet ik doen met de gegevens?!
  6. C++ Switch Case Statement met VOORBEELD
  7. C++ Char-gegevenstype met voorbeelden
  8. C++-structuur met voorbeeld
  9. std::lijst in C++ met Voorbeeld
  10. C# - Gegevenstypen
  11. C# - Typeconversie