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

C Programmeren: Type Casting & Conversie onder de knie krijgen

Het converteren van één datatype naar een ander heet type casting of type-conversie. Als je bijvoorbeeld een 'long' waarde wilt opslaan in een simpele integer, kun je 'long' casten naar 'int'. Je kunt waarden expliciet converteren van één type naar een ander met behulp van de cast operator als volgt:

(type_naam) expressie

Bekijk het volgende voorbeeld waar de cast operator ervoor zorgt dat de deling van één integer variabele door een andere wordt uitgevoerd als een floating-point operatie:

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

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

Waarde van mean : 3.400000

Het moet opgemerkt worden dat de cast operator voorrang heeft over deling, dus de waarde van sum wordt eerst geconverteerd naar type double en tenslotte gedeeld door count, wat een double waarde oplevert.

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

Integer Promotie

Integer promotie is het proces waarbij waarden van integer type "kleiner" dan int of unsigned int worden geconverteerd naar int of unsigned int. Overweeg een voorbeeld van het optellen van een character met een integer:

Live Demo
#include <stdio.h>
main() {
    int i = 17;
    char c = 'c'; /* ascii waarde is 99 */
    int sum;
    sum = i + c;
    printf("Waarde van sum : %d\n", sum );
}

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

Waarde van sum : 116

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

Gewone Rekenkundige Conversie

De gewone rekenkundige conversies worden impliciet uitgevoerd om hun waarden te casten naar een gemeenschappelijk type. De compiler voert eerst integer promotie uit; als de operandes nog steeds verschillende typen hebben, worden ze geconverteerd naar het type dat het hoogst in de volgende hiërarchie staat:

C Programmeren: Type Casting & Conversie onder de knie krijgen

De gewone rekenkundige conversies worden niet uitgevoerd voor de toewijzingsoperatoren, noch voor de logische operatoren && en ||. Laten we het volgende voorbeeld nemen om het concept te begrijpen:

Live Demo
#include <stdio.h>
main() {
    int i = 17;
    char c = 'c'; /* ascii waarde is 99 */
    float sum;
    sum = i + c;
    printf("Waarde van sum : %f\n", sum );
}

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

Waarde van sum : 116.000000

Hier is het eenvoudig te begrijpen dat eerst c geconverteerd wordt naar integer, maar aangezien de eindwaarde double is, geldt de gewone rekenkundige conversie en de compiler converteert i en c naar 'float' en telt ze op, wat een 'float' resultaat oplevert.


C Taal

  1. De Ultieme Gids voor Precisiegieten: Technieken & Toepassingen
  2. Drukgieterij uitgelegd: precisie, efficiëntie en productievoordelen
  3. C# type conversie: implicit, explicit, Parse en Convert methodes
  4. C++ Char Datatype: Declaratie, ASCII en Conversie‑Technieken
  5. C++ Variabelentypen Uitgelegd: Geheugen, Limieten en Operaties
  6. C# Datatypes: Waarde, Referentie en Pointer Types
  7. Typeconversie in C# Begrijpen: Impliciete & Expliciete Casting Uitgelegd
  8. C# Nullable Typen Begrijpen: Null-waarden Veilig Afhandelen
  9. C#-attributen onder de knie: code verrijken met metadata
  10. Python Type Conversie & Casting onder de knie krijgen: Een uitgebreide gids
  11. Java Type Casting: Van widening tot narrowing en verder