Einführung

Einführung

Wie versprochen werden wir mit diesem Teil unseres C -Entwicklungsartikels ohne weitere Einführung mit dem Lernen beginnen. Ich konnte keinen besseren Start mehr als diesen finden, da Typen, Bediener und Variablen ein wesentlicher Bestandteil von C sind und Sie sie beim Schreiben Ihrer eigenen Programme ständig verwenden werden. Zum Beispiel können Sie ein einfaches C -Programm schreiben, ohne Ihre eigenen Funktionen zu definieren, aber es ist schwieriger, dies ohne einige Variablen zu tun, es sei denn, Sie möchten sich an „Hallo, Welt!”. Eine Variable ist nichts anderes als ein Ort im Speicher, der einen Wert besitzt, der geändert werden kann (daher der Name). Bevor Sie jedoch eine Variable deklarieren, müssen Sie wissen, welche Art von Wert Sie möchten, und hier verwenden Sie Typen. Und um zu arbeiten Auf diesen Variablen brauchen Sie natürlich… Operatoren. Ich beabsichtige, diesen Kurs so präzise wie möglich zu gestalten, daher empfehle ich Aufmerksamkeit und wie immer üben.

Typen

Wie gesagt, bevor Sie eine Variable deklarieren, müssen Sie wissen, welche Art von Wert sie halten wird. Wird es eine Nummer sein?? Wenn ja, wie groß könnte es möglicherweise werden? Ist es eine Ganzzahl?? Oder vielleicht möchten Sie eine Zeichenfolge deklarieren? Dies sind Dinge, die Sie mit Sicherheit wissen, bevor Sie den Typ auswählen, und wir empfehlen zusätzliche Sorgfalt bei möglichen Pufferüberläufen. C ist die Art von Sprache, die Ihnen genügend Seil gibt, um sich selbst zu hängen, und nicht viel Hand halten, und diese Fehler sind in einem großen Programm sehr schwer zu erkennen.

Bevor wir beginnen, müssen Sie sich der Beziehungen zwischen Hardware und Typen bewusst sein. Hier erwarten wir, dass Sie etwas für sich selbst lesen, insbesondere wenn Sie andere Hardware als X86 verwenden, sei es 32 oder 64-Bit, andere Compiler als GCC oder andere Betriebssysteme als Linux. Normalerweise treten diese Unterschiede beim Umgang mit schwimmenden Punktwerten auf. Wir werden uns nicht mehr eingehen, da es weder die Zeit noch der Ort ist, aber Sie werden erwartet. Jetzt fangen wir an.

Char C; nicht signiertes Char uc; kurze Hose; nicht signierte kurze uns; int i; nicht signiert u; lange l; nicht signierte lange ul; float f; doppelt d; langes Doppel -LD; const int ci; 

Wir haben uns entschlossen, hier den Weg von „Beispiel zuerst, Erklärungen“ zu gehen, weil wir das Gefühl hatten, dass einige von Ihnen das obige Beispiel vertraut finden werden. Es gibt andere verwandte Sprachen, die ihre Variablen auf die gleiche Weise deklarieren, und schließlich sind die Schlüsselwörter intuitiv. Bevor wir weitermachen, muss gesagt werden, dass char, int, float und doppelt die primären Datentypen in C sind. Nicht signiert und signiert sind Modifikatoren, Wenn Sie mit Werten, die kleiner als Null sind, arbeiten müssen, sollten Sie dem Compiler mitteilen, dass Ihre Variable signiert ist, wie darin größer oder kleiner als Null sein kann. Lang und kurz (diese sind in der Regel für Ganzzahlen anwendbar) ermöglichen es Ihnen, größere Werte oder kleiner zu speichern, und die Anzahl der Bytes ist maschinell abhängig, aber ein kurzes muss immer kleiner als ein int sein, was wiederum immer kleiner sein muss als entlang. Wie Sie sehen können, verwendet man in der Praxis nicht lange oder kurze int, nur lang oder kurz. Das CONT -Schlüsselwort sagt dem Compiler, dass eine Variable, sobald sie einen Wert hat, nicht geändert werden kann.

Beginnen wir mit dem kleinsten Typ, Char. Es ist garantiert groß genug, um einen Byte wert zu halten, und es hat immer feste Größe. Wenn die Leute Ihnen sagen werden, dass ein Byte immer acht Teile ist, denken Sie besser noch einmal darüber nach. Jede beliebte Hardware-Architektur verwendet tatsächlich acht Bit Bytes, aber es gibt Ausnahmen. Machen Sie also keine Annahmen, wenn Sie tragbare Code schreiben möchten. Da ein Byte acht Bit beträgt, kann ein Zeichen (nicht signiert) Werte von 0 bis 255 halten, das ist 28. Wenn ein Zeichen unterschrieben ist, kann es Werte von -128 bis 127 enthalten. Aber der Name mag Sie irreführen: Ein Charakter kann tatsächlich in einem SHAR gespeichert werden, aber wenn Sie Unicode verwenden, sprechen wir dort über Multibyte und Sie müssen WCAR_T verwenden, aber dazu später mehr.

Jetzt, da Sie wissen, welche Typ Modifikatoren sind, können wir zu Ganzzahlen kommen. Bei Ganzzahlen können Sie die Vorzeichen- und Längenmodifikatoren, wie im obigen Beispiel, kombinieren, um Ihren Anforderungen zu entsprechen. Denken Sie daran, einen Redakteur griffbereit zu haben und sich mit den Grenzen zu erkundigen.H Header (auf meinem System ist es in /usr /include), um die tatsächlichen Grenzen Ihres Systems herauszufinden. In der Regel hält ein int Werte von 0 bis 65535 oder, falls sie unterschrieben sind, von -32768 bis 32767. Und ein langer Modifikator verdoppelt die Anzahl der Speicherbytes. Wenn also ein int 2 Bytes benötigt wird, benötigt eine lange 4 4. Wir werden es dem Benutzer überlassen, den Rest der Ganzzahlen und deren minimalen und maximalen Werte herauszufinden. Wir zeigen Ihnen jedoch, wie Sie Größen und Grenzen Ihres Systems herausfinden können.

Floats sind Floating-Punkt-Werte, was impliziert, dass Sie eine solche Variable definieren müssen:

Schwimmerwert; Wert = 234.00;

Auch wenn es nach dem Punkt (dem Dezimalteil) nichts nichts hat, ist es tatsächlich eine Ganzzahl. Es gibt tatsächlich Situationen, in denen Sie einen Ganzzahlwert als Float deklarieren müssen, da sich der Wert ändern kann und der deklarierte Typ in der Lage sein muss, schwimmende Punktwerte zu speichern. Alle Werte auf Ihrer Maschine finden Sie im Float.H.

Variablen

Nachdem Sie nun wissen, welche Typen Sie in C verfügbar haben, sehen wir sehen, wie Sie sie effektiv verwenden können. Einige von vielleicht fragen sich: „Wenn wir lange Doppel haben, die Werte so groß speichern können, warum nicht überall verwenden?” . Bei der Programmierung handelt. Wenn Sie eine Variable deklarieren, ist ein Speicherback dafür je nach Typ reserviert. Also, warum das Gedächtnis ohne guten Grund verschwenden?? Erstellen Sie die Gewohnheit, den genauen Typ zu verwenden, der Ihren (möglichen) Werten entspricht, nicht weniger, nicht mehr. Sie haben oben gesehen, wie es geht erklären Variablen. Lassen Sie uns nun sehen, wie sie sie definieren können, wie es in einem Wert geben.

c = 'a'; I = 234; F = 12643.984; LD = 16546581654161598309.87;

Wir haben die Namen aus den vorherigen Beispielen genommen, die, wie Sie vielleicht bemerkt haben, geschrieben wurden, um den zugewiesenen Typ widerzuspiegeln, also ist 'ld' ein langes Doppel und so weiter. In diesem Beispiel haben wir zwei Schritte unternommen: die erste, die die Variable deklariert, die zweite, um sie zu definieren, indem wir ihr einen Wert zuweisen. Einige werden sagen, dass es ein guter Stil ist, so Code zu schreiben, aber Sie können beide Vorgänge in einem Schritt ausführen, und niemand wird Sie verletzen:

char c = 'a'; int i = 234; float f = 12643.984; Long Double LD = 16546581654161598309.87;

Wir empfehlen und fordern Sie sogar auf, Namen mit einer Bedeutung in Ihrem Code zu verwenden, und kommentieren es so weit wie möglich: Wahrscheinlich gibt es andere, was Sie geschrieben haben, und ihr Leben wird so viel einfacher sein, wenn Sie dies tun. Verwenden Sie außerdem nur dann CAPS. Auch das erste Zeichen im Variablennamen muss ein Buchstaben sein.

Da alle Gespräche und kein Spiel nicht gut sind, zeigen wir Ihnen ein kleines Programm, mit dem Sie die minimalen und maximalen Werte verschiedener Typen sehen können, aber wir werden nur einige veranschaulichen. Der Rest ist Ihre Aufgabe, nach unserem Beispiel zu erledigen, wobei ein Redakteur Grenzen hat.H und schweben.H offen. Hier wird es einige neue Elemente geben, aber machen Sie sich keine Sorgen, sie werden erklärt.

#include #include #include int main () unsigned long long ullmax = ullong_max; long lmax = long_max; langes double ldmax = ldbl_max; printf ("Der maximale Wert einer nicht signierten Long ist %lu.\ n ", Ullmax); printf (" Der maximale Wert einer langen ist %LD.\ n ", lmax); printf (" Der maximale Wert eines langen Doppels ist %LF.\ n ", ldmax); zurückkehren 0;  

Wir deklarieren also drei Variablen mit aussagekräftigen Namen und weisen ihnen die Werte von drei in Grenzen definierten Makros zu.H und schweben.H. Dann müssen wir sie natürlich drucken. Wir machen das mit printf () und hier werden wir für ein kleines Gespräch aufhören. Wir empfehlen 'Man 3 Printf' für weitere Details zu Format Saiten, Das heißt, der Teil der doppelten Zitate von Insider Printf, die mit einem "%" beginnen. Sie sagen Printf, welche Art von Wert es erwarten sollte, daher sollte es sich mit verschiedenen Typen unterschiedlich verhalten. Im ersten Beispiel bedeutet '%lu' lang (das L), was nicht signiert ist (das 'u'). Für Ganzzahlen ist die Formatkette 'D' für Dezimalal und weil es eine lange ganze Zahl ist, wird es '%ld' sein. Im dritten Printf steht F für Float, ein Doppel ist im Grunde genommen ein langer Schwimmer und ein langes Doppel ist ein langer langer Schwimmer, daher das Format.

Speichern Sie nun den obigen Code, kompilieren Sie ihn und führen Sie ihn aus. Dieses Programm hilft Ihnen, sobald Sie mehr dazu hinzufügen, Ihnen helfen, wenn Sie eine Variable deklarieren möchten, aber Sie sind sich noch nicht sicher, in welche Art sie passen sollte.

Betreiber

Rechenzeichen

Dieser Unterkapitel befasst sich natürlich mit den üblichen grundlegenden Betreibern, die Sie in der Grundschule gelernt haben. Aber es gibt ein bisschen mehr. Feindbeispiel,. Die +, -, *und % Operatoren sind die binären Operatoren. % ist der Modulo -Operator, was bedeutet, dass das Ergebnis 0 sein wird, wenn wir 50 % 2 haben, da das Ergebnis der Division 50 /2 eine Ganzzahl hat. Sie können die ersten vier Operatoren mit jedem numerischen Wert verwenden, aber Modulo handelt nur mit Ganzzahlen. Vorrang ist dieselbe wie im Arithmetics -Buch.

Relationale Operatoren

Diese Operatoren sind>,> =, <=, <, and they all have the same precedence. For the next part we recommend extra care, because it's cause for much confusion in the beginner's league, and non-beginners alike. Like said above, one uses '=' to give some value to a variable. But if you want to check if a variable has a certain value, you use '==', and if it hasn't, use '!=', where '!' is the logical negation operator, as you'll see. Let's take the following (useless) example:

#include int main () int var = 4; Wenn (var == 4) printf ("var ist 4 ist 4!\N"); anders printf ("Es stimmt etwas nicht.\N"); zurückkehren 0;  

Casting

Kurz gesagt, Casting zwingt den Compiler, den Typ einer Variablen zu vergessen und als einen anderen Typ zu behandeln, den Sie liefern. Dies ist nicht zufällig, nur zwischen kompatiblen Typen, und es wird bei der Verwendung von Casting eine Sorgfalt empfohlen. Nehmen wir zum Beispiel an, wir möchten den ASCII -Wert von 'a' herausfinden. Der Code könnte so aussehen:

#include int main () char c = 'a'; printf ("Der ASCII -Wert von 'a' ist %d.\ n ", (int) c); zurückkehren 0;  

Sie erhalten den Wert 97, der in der Tat der ASCII -Wert von 'a' ist. Durch die Verwendung von Klammern vor und nach dem Typ, den Sie „auferlegen“, und all dies vor dem Namen der Variablen, erhalten Sie Casting. Das obige Beispiel funktioniert, da ein Zeichen nichts anderes als ein kleines int ist, daher sind die Typen kompatibel. Versuchen Sie, die obige Variable an andere Typen zu gießen und beachten Sie die Ergebnisse.

Inkrement- und Dekrement -Operatoren

Sie haben sicher von C ++ gehört. Nun, der Name legt nahe, dass es irgendwie mehr als C ist, da "++" ein Inkrementoperator ist (fügt 1 zum Wert der Variablen), genau wie "-" ein Dekrementoperator ist. Dies sind unäre Betreiber und können sowohl vorangestellt als auch postfixiert werden. Was bedeutet das? Dies bedeutet, dass Sie entweder ++ C oder C ++ schreiben können, und das Ergebnis kann möglicherweise ähnlich sein oder nicht. Der Unterschied besteht darin, dass mit '++' vorangestellt wird, der Wert der Variablen zuerst durch eins erhöht, dann verwendet und umgekehrt umgekehrt. Wir zeigen Ihnen ein kurzes Beispiel dafür, wann es wichtig ist und wann dies nicht der Fall ist.

#include int main () int x; int n = 10; int z; n ++; / * n wird jetzt 11 sein */ ++N; / *dito, Präfix oder postfix unwichtig *///// x = n ++; / * x ist 10 *//// z = ++ n; / * z wird 11 */sein zurückkehren 0;  

Aber was ist, wenn Sie mit mehr als einem inkrementieren/verringern möchten?? Einfach, da C ++ das Äquivalent von C+= 1 ist. Ersetzen Sie 1 durch den Wert, den Sie benötigen, und Sie sind eingestellt. Diese zusammengesetzten Operatoren können auch mit allen anderen binären arithmetischen Operatoren verwendet werden (e.G. *= oder /=) und auch die bitweisen Operatoren wie 'A & = B'.

Bitgewise -Operatoren

In C können Sie leicht bitweise Vorgänge ausführen, aber denken Sie daran! Sie funktionieren und sollen nur mit ganzzahligen Typen verwendet werden, signiert oder nicht signiert. Diese Betreiber sind:

& - bitweise und | - bitweise oder ^ - xor <> - Rechtsverschiebung - - Die Ergänzung

Logische Operatoren

Wir haben uns bereits befasst!', das jeden logischen Ausdruck negiert, aber es gibt zwei sehr wichtige logische Operatoren (achten Sie darauf, sie nicht mit den bitgewiehenen zu vermischen): bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. bzw. Also, wenn ich in c so etwas wie „Wenn Variable 1 Wert 2 und Variable 2 Wert 8“ schreiben möchte, schreibe ich wie folgt:

Wenn (var1 == 2 && var2 == 8)… 

Hier müssen beide Bedingungen als wahr für die Anweisungen bewerten. Wenn entweder oder beides wir tun, ersetzen wir '&&' durch '||' ' (Konjunktion versus Disjunktion).

Andere Betreiber

Menschen, die einige C -Erfahrung haben, haben möglicherweise das Fehlen einiger Betreiber bemerkt haben. Natürlich, und wir wissen uns dessen, aber welchen Sinn würde es machen, den indirekten Operator aufzulisten, während die Leser nicht wissen, was ein Zeiger ist? Daher werden die anderen Betreiber, die für andere Teile von C spezifisch sind, zu gegebener Zeit behandelt.

Abschluss

Mit den in diesem Teil angebotenen Beispiele haben wir sicher, dass Sie genug spielen und verschiedene Optionen ausprobieren können. Sie wissen, der Compiler beißt nicht, wenn Sie falsche Daten füttern, und der Computer explodiert auch nicht. Und wie wir bereits gesagt haben, können Sie nicht nur das Programmieren lernen, indem Sie nur Bücher lesen. Holen Sie sich Ihre Tastatur und erstellen Sie etwas Interessantes.

Hier ist, was Sie als nächstes erwarten können:

  • ICH. C Entwicklung unter Linux - Einführung
  • Ii. Vergleich zwischen C und anderen Programmiersprachen
  • III. Typen, Operatoren, Variablen
  • Iv. Ablaufsteuerung
  • V. Funktionen
  • Vi. Zeiger und Arrays
  • Vii. Strukturen
  • Viii. Grundlegende I/O
  • Ix. Codierungsstil und Empfehlungen
  • X. Ein Programm erstellen
  • Xi. Verpackung für Debian und Fedora
  • Xii. Ein Paket in den offiziellen Debian -Repositories erhalten

Verwandte Linux -Tutorials:

  • Python reguläre Ausdrücke mit Beispielen
  • Bash -Skript: Hallo Weltbeispiel
  • So installieren Sie Ubuntu am USB -Stick
  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Erstellen Sie Manjaro Linux bootable USB
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Ubuntu 20.04 Tricks und Dinge, die Sie vielleicht nicht wissen
  • Erstellen Sie ein bootfähiges Ubuntu 20.04 USB -Stick auf MS Windows 10
  • So installieren Sie die Nvidia -Treiber auf Fedora 32