Inhaltsverzeichnis:
Video: LED blinken / Bitmanipulation - Mikrocontroller programmieren in C - AVR C Tutorial - Part 2 2024
In der C-Programmierung können Sie mit der Variable in Ihrem Code arbeiten, indem Sie sie in einen anderen Typ ändern, ihr einen neuen Namen geben oder einen Zauber auf die Variable, um Ihre Bedürfnisse zu erfüllen, wohlwollend oder nicht.
Typisierung in Unglauben
Wann ist eine float-Variable kein Float? Wenn es in ein Int geschrieben ist, natürlich. Dieser Trick wird in C mit dem Typcast ermöglicht. Zum Beispiel:
(int) debt
In der vorhergehenden Zeile wird die Float-Variable debt in einen int-Wert umgewandelt. Das int in Klammern weist den Compiler an, den Wert von debt als ganze Zahl zu behandeln.
Warum sollte jemand das machen wollen?
Weil eine Funktion manchmal einen bestimmten Variablentyp benötigt und dieser Typ nicht verfügbar ist. Anstatt mehrere Variablentypen in einem Programm zu konvertieren und zu jonglieren, können Sie einfach eine Variable in den gewünschten Typ eingeben. Es ist kein üblicher Trick, aber oft notwendig, wie in "Das ist nicht richtig" gezeigt wird.
DAS IST NICHT RECHT
#include int main () {int a, b; Schwimmer c; printf ("Geben Sie den ersten Wert ein:"); scanf ("% d", & a); printf ("Geben Sie den zweiten Wert ein:"); scanf ("% d", & b); c = a / b; printf ("% d /% d =%. 2fn", a, b, c); return (0);}
Übung 1: Geben Sie den Quelltext von "Das ist nicht richtig" in Ihren Editor ein. Baue und laufe.
Hier sehen Sie einen Beispiellauf mit der Eingabe in Fettdruck:
Geben Sie den ersten Wert ein: 3 Geben Sie den zweiten Wert ein: 2 3/2 = 1. 00
Offensichtlich ist es falsch, dass 3 ÷ 2 irgendwie zu 1. 50 funktioniert. Wenn der Computer sagt, dass es 1. 00 ist, muss der Computer korrekt sein.
Oder vielleicht ist der Computer nur verwirrt, weil in Zeile 12 des Quellcodes zwei int-Werte geteilt werden und das Ergebnis einem float zugewiesen wird. Das funktioniert jedoch nicht ganz, da die Division einer ganzen Zahl durch eine ganze Zahl in C eine ganze Zahl als Ergebnis ergibt.
Der Wert 1 ist der nächstliegende ganzzahlige Wert zu 1. 50. Obwohl der Computer falsch ist, tut er genau das, was ihm gesagt wurde.
Übung 2: Ändern Sie Ihren Quellcode, indem Sie Zeile 12 in
ändern c = (float) a / (float) b;
Speichern Sie die Änderung. Erstellen und starten Sie mit den gleichen Werten wie oben gezeigt. Hier ist die neue Ausgabe:
Geben Sie den ersten Wert ein: 3 Geben Sie den zweiten Wert ein: 2 3/2 = 1. 50
Besser. Das liegt daran, dass Sie die Variablen a und b in die Gleichung eintippen, damit der Compiler sie vorübergehend als Gleitkommazahlen behandeln kann. Daher ist das Ergebnis das, was es sein sollte.
So erstellen Sie neue Dinge mit typedef
Mit dem Schlüsselwort typedef können Sie eine Menge Ärger bekommen.Es kann normale C-Worte und Operatoren aus ihrem konsistenten Selbst in allerlei Unfug verwandeln.
DIE PERILEN VON TYPEDEF
#include typedef int stinky; Stinky Haupt () {Stinky a = 2; printf ("Jeder weiß das"); printf ("% d +% d =% dn", a, a, a + a); return (0);}
In den Gefahren von typedef definiert die Anweisung typedef in Zeile 3, dass das Wort stinky dasselbe wie das Schlüsselwort int ist. Überall, wo Sie int im Code verwenden können, können Sie stattdessen das Wort stinky verwenden, wie in den Zeilen 5 und 7 gezeigt.
Übung 3: Verwenden Sie den Quellcode von The Perils of typedef < um ein neues Programm zu erstellen, das zeigt, dass ein Stinky-Variablentyp derselbe ist wie ein int. Baue und laufe. Zugegeben, das Beispiel in Die Gefahren von
typedef ist ziemlich dumm; kein seriöser Programmierer würde so ein echtes Programm aufsetzen. Wo Typedef am häufigsten verwendet wird, ist bei der Definition von Strukturen. Die Typedef-Anweisung hilft dabei, die Chunkiness dieser Aktivität zu reduzieren. Eine Struktur erstellen Der traditionelle Weg zeigt, wie geschachtelte Struktur funktioniert, wenn man Strukturen kennt:
ERSTELLEN EINER STRUKTUR DER TRADITIONELLE WEG
struct id {char first [20]; char zuletzt [20];}; struct Datum {int Monat; int Tag; int Jahr;}; struct Mensch {struct id name; struct Datum Geburtstag;};
Die Verwendung von
t ypedef zum Definieren einer Struktur zeigt, wie die Deklarationen erfolgen, wenn Sie die Strukturen typisieren würden: USING
TYPEDEF EINE STRUKTUR DEFINIEREN > Typedef-Struktur-ID {char first [20]; char last [20]; persönlich; typedef struct Datum {int Monat; int Tag; int Jahr;} Kalender; struct Mensch {Name der Person; Kalender Geburtstag;}; In diesem Listing wird die Struktur-ID dem Namen personal zugewiesen. Das ist kein Variablenname; Es ist ein Typedef. Es ist das Gleiche wie zu sagen: "Alle Verweise auf struct id sind jetzt gleich wie der Name personal. "
Ebenso wird das Strukturdatum in den Kalender eingegeben. Schließlich werden in der Deklaration der Struktur Mensch die Typedef-Namen anstelle der komplexeren Strukturdefinitionen verwendet.
Eine NESTED-STRUKTUR
#include #include int main () {struct date {int month; int Tag; int Jahr;}; struct Mensch {char name [45]; struct Datum Geburtstag;}; strukturieren Sie den menschlichen Präsidenten; strcpy (Präsident. Name, "George Washington"); Präsident. Geburtstag. Monat = 2; Präsident. Geburtstag. Tag = 22; Präsident. Geburtstag. Jahr = 1732; printf ("% s war geboren am% d /% d /% dn", Präsident. Name, Präsident. Geburtstag. Monat, Präsident. Geburtstag. Tag, Präsident. Geburtstag. Jahr); return (0);}
Übung 4
:
Ersetzen Sie das Element name in der menschlichen Struktur in einer geschachtelten Struktur durch eine geschachtelte Struktur. Benennen Sie diese Struktur-ID und lassen Sie sie zwei Member enthalten, Char-Arrays, erste und letzte, um den Vor- und Nachnamen einer Person zu speichern. Wenn Sie alles richtig machen, wird der Verweis auf den Namen des Präsidenten die Variable Präsident sein. Name. erster
und Präsident. Name. zuletzt . Stellen Sie sicher, dass Sie diesen Variablen in Ihrem Code Werte zuweisen und die Ergebnisse anzeigen. Übung 5 :
Ändern Sie den Quellcode des in Übung 4 erstellten Projekts in typedef, wie in t ypedef unter Struktur definieren gezeigt. Baue und laufe. Es kann argumentiert werden, dass die Verwendung von typedef Ihren Code nicht deutlicher macht, als wenn Sie einfach gute Variablennamen und gut formatierten Text verwendet hätten. Zum Beispiel dürfen Sie typedef nicht verwenden, nur weil Sie sich nicht daran erinnern müssen, was Sie definiert haben. Aber Sie werden auf anderen Code stoßen, der typedef verwendet. Lass es dich nicht ausflippen. Der wahre Vorteil der Verwendung von typedef mit einer Struktur liegt möglicherweise darin, dass Sie das Wort struct nicht zu oft eingeben müssen.