C Grundlegende Syntax
Die Sprache C ist eine universelle Programmiersprache, die in Bereichen wie Systemprogrammierung, Embedded-Entwicklung und Hochleistungsrechnen weit verbreitet ist.
Die Sprache C zeichnet sich durch hohe Effizienz, Flexibilität und starke Portabilität aus. Sie ist die Grundlage vieler anderer Programmiersprachen (wie C++, Java, Go) und bleibt die Mainstream-Wahl für Betriebssysteme, Treiber und die Entwicklung von Low-Level-Bibliotheken.
In der Sprache C sind Tokens die grundlegenden Bausteine eines Programms. Der Compiler führt eine lexikalische Analyse des Quellcodes durch und zerlegt den Code in einzelne Tokens. Tokens sind die kleinsten bedeutungstragenden Einheiten, die der Compiler erkennen kann, und das gesamte C-Programm setzt sich aus diesen Tokens zusammen.
Tokens in der Sprache C umfassen hauptsächlich die folgenden Typen:
- Schlüsselwörter: Wörter, die von der Sprache mit besonderen Bedeutungen reserviert sind, wie z. B.
int、if、return。 - Bezeichner: Namen, die von Programmierern definiert werden und für Variablen, Funktionen, Arrays usw. verwendet werden.
- Konstanten: Werte in einem Programm, die fest und unverändert sind, wie z. B. Ganzzahlen
42, Gleitkommazahlen3.14。 - Zeichenkettenliterale: Zeichenfolgen, die in doppelte Anführungszeichen eingeschlossen sind, wie z. B.
"Hello"。 - Operatoren: Symbole, mit denen Operationen ausgeführt werden, wie z. B.
+、==、&&。 - Trennzeichen: Symbole, mit denen Anweisungen und Codeblöcke getrennt werden, wie z. B.
;、{}。
Grundstruktur eines C-Programms
Dies ist ein einfaches C-Programm, das "Hello, World!" ausgeben kann:
Beispiel
int main() {
printf("Hello, World!\n");
return 0;
}
Der obige Code besteht aus der folgenden Struktur:
- Präprozessor-Direktiven: wie zum Beispiel
#includeund#define, vom Präprozessor vor der Kompilierung verarbeitet. - main-Funktion: Jedes C-Programm hat genau eine
main()Die Funktion ist der Einstiegspunkt des Programms. - Variablendeklaration: deklariert die Variablen im Programm. C89 erfordert, dass sie ganz am Anfang eines Codeblocks stehen.
- Funktionsdefinitiondefiniert die im Programm verwendeten Funktionen und beschreibt die konkrete Implementierungslogik der Funktionen.
Eine komplexere Erklärung der Struktur eines C-Programms (auf jeden Wissenspunkt wird in späteren Kapiteln näher eingegangen):
Beispiel
#define PI 3.14159 // Makrodefinition
// Funktionsdeklaration
int add(int a, int b);
int main() { // Hauptfunktion
// Variablendeklaration
int num1, num2, sum;
// Benutzereingabe
printf("Geben Sie zwei ganze Zahlen ein: ");
scanf("%d %d", &num1, &num2);
// Funktionsaufruf
sum = add(num1, num2);
// Gib die Ergebnisse aus
printf("Sum: %d\n", sum);
return 0; // Rückgabe von 0 bedeutet erfolgreiche Programmausführung
}
// Funktionsdefinition
int add(int a, int b) {
return a + b;
}
Einbindung von Header-Dateien
- Header-Dateien werden üblicherweise am Anfang eines Programms verwendet
#includeDie include-Direktive. Header-Dateien bieten Deklarationen von Funktionen und Bibliotheken, wie die Standard-Eingabe/Ausgabe-Bibliothek<stdio.h>, Standardbibliothek<stdlib.h>usw. Sie definieren Funktionen, Makros, Konstanten usw., wodurch das Programm vordefinierte Bibliotheksfunktionen verwenden kann. - System-Header-Dateien verwenden spitze Klammern
<>, benutzerdefinierte Header-Dateien verwenden doppelte Anführungszeichen"", die beiden haben unterschiedliche Suchpfade. - Beispiel:
#include <stdio.h>(System-Header-Dateien),#include "myheader.h"(benutzerdefinierte Header-Dateien)
Makrodefinition
- Ein Makro wird implementiert durch
#defineSymbolische Konstanten oder Codefragmente, die durch Direktiven definiert werden. Makros werden vor der Kompilierung vom Präprozessor textuell ersetzt, belegen keinen Laufzeitspeicher und werden häufig verwendet, um Konstanten oder einfache Inline-Code-Logik zu definieren. - Makros unterliegen keiner Typprüfung und sollten mit Vorsicht verwendet werden; für Konstanten mit Typanforderungen wird die Verwendung von
constVariablensubstitution. - Beispiel:
#define PI 3.14159、#define MAX(a, b) ((a) > (b) ? (a) : (b))
Funktionsdeklaration
- In der Sprache C müssen Funktionsdeklarationen (auch Prototypen genannt) vor der Funktionsdefinition oder dem Funktionsaufruf erscheinen. Die Deklaration liefert den Rückgabetyp, den Funktionsnamen und die Parameterliste der Funktion, damit der Compiler an der Aufrufstelle eine Typprüfung durchführen kann.
- Funktionsdeklarationen können in Header-Dateien untergebracht werden, um von mehreren Quelldateien gemeinsam genutzt zu werden.
- Beispiel:
int add(int a, int b);
main-Funktion
main()Die Funktion ist der Einstiegspunkt eines C-Programms. Jedes C-Programm muss einemain()Funktion. Das Programm startet vonmain()startet die Ausführung, der Rückgabewert ist normalerweise0zeigt eine erfolgreiche Programmausführung an, und ein Wert ungleich null zeigt an, dass ein Fehler aufgetreten ist.main()Funktionen können auch Kommandozeilenargumente empfangen:int main(int argc, char *argv[]), wobeiargcist die Anzahl der Parameter,argvist das Argument-String-Array.- Beispiel:
int main() { ... }
Variablendeklaration
- In C-Programmen müssen alle Variablen vor der Verwendung mit ihrem Typ deklariert werden. Variablen können
main()innerhalb von Funktionen deklariert werden (lokale Variablen), oder global außerhalb von Funktionen (globale Variablen). - Variablen können gleichzeitig mit der Deklaration initialisiert werden. Nicht initialisierte lokale Variablen enthalten unbestimmte Werte (Müllwerte), während globale Variablen und statische Variablen automatisch initialisiert werden auf
0。 - Beispiel:
int count = 0;、float price = 9.99;、char grade = 'A';
Anweisungen und Ausdrücke
- Anweisungen sind die grundlegenden Ausführungseinheiten eines C-Programms. Sie sind normalerweise Funktionsaufrufe, Zuweisungen und Kontrollanweisungen (wie zum Beispiel
if、forusw.) oder Ausdrücke. Ein Ausdruck ist ein Codefragment, das aus Variablen, Operatoren und Konstanten besteht und einen Wert berechnen kann. - In der Sprache C ist die Zuweisung selbst ebenfalls ein Ausdruck und hat einen Wert (d. h. den zugewiesenen Wert), daher kann man schreiben
a = b = c = 0;eine verkettete Zuweisung wie folgt. - Beispiel:
printf("Enter two integers: "); sum = add(num1, num2);
Kontrollflussanweisungen
- Kontrollflussanweisungen werden verwendet, um die Reihenfolge der Programmausführung zu steuern, einschließlich bedingter Verzweigungen (
if/else、switch) und Schleifen (for、while、do-while). Es gibt auch Sprunganweisungenbreak、continue、gotoundreturn。 - Der sinnvolle Einsatz von Kontrollflussanweisungen ist der Schlüssel zum Schreiben von Programmen mit klarer Logik, und ihr Missbrauch sollte vermieden werden.
gotoum die Lesbarkeit des Codes zu wahren. - Beispiel:
if (num1 > num2) { printf("num1 is greater than num2"); }
Funktionsdefinition
- Eine Funktionsdefinition enthält einen vollständigen Funktionskörper und beschreibt die konkrete Implementierung der Funktion. Eine Funktion besteht aus einem Rückgabetyp, einem Funktionsnamen, einer Parameterliste und einem Funktionskörper. Ein gutes Funktionsdesign sollte dem Prinzip der "einzigen Verantwortlichkeit" folgen, wobei jede Funktion nur eine Sache tut.
- Funktionen in C unterstützen kein Überladen. Jeder Funktionsname muss im selben Gültigkeitsbereich eindeutig sein. Funktionen können sich selbst rekursiv aufrufen.
- Beispiel:
int add(int a, int b) { return a + b; }
Return-Anweisung
returnDie Anweisung wird verwendet, um die Ausführung einer Funktion zu beenden und die Kontrolle zusammen mit dem Rückgabewert an den Aufrufer zurückzugeben.voidFunktionen des Typs können ein return ohne Wert verwendenreturn;um frühzeitig zu beenden, oder können diereturnAnweisung weglassen.main()Der Rückgabewert der Funktion wird an das Betriebssystem übergeben,0der normalerweise Erfolg anzeigt, und das Standardmakro kann verwendet werdenEXIT_SUCCESSundEXIT_FAILURE(definiert in<stdlib.h>)。- Beispiel:
return 0;、return EXIT_SUCCESS;
Trennzeichen
Trennzeichen werden verwendet, um Anweisungen, Ausdrücke und Codeblöcke zu trennen und dem Compiler zu helfen, die Struktur des Programms zu verstehen. Häufige Trennzeichen sind:
- Komma,: wird verwendet, um mehrere Elemente in Variablendeklarationen, Funktionsparametern oder Initialisierungslisten zu trennen.
- Semikolon;: wird verwendet, um eine Anweisung zu beenden, und ist das häufigste Trennzeichen in der Sprache C.
- Klammern:
- Runde Klammern
(): werden für die Parameterlisten von Funktionsaufrufen, Bedingungen in Kontrollflussanweisungen und zum Erzwingen der Auswertungsreihenfolge von Ausdrücken verwendet. - Geschweifte Klammern
{}: werden verwendet, um Funktionskörper, Kontrollfluss-Codeblöcke und Initialisierungen von zusammengesetzten Literalen und Arrays/Strukturen zu definieren. - Eckige Klammern
[]: werden für Array-Deklarationen und Elementzugriff (Indexoperation) verwendet.
- Runde Klammern
In C-Programmen ist das Semikolon;der Anweisungsabschluss. Jede Anweisung muss mit einem Semikolon enden, das das Ende einer logischen Einheit anzeigt. Ein fehlendes Semikolon ist einer der häufigsten Syntaxfehler für Anfänger.
Zum Beispiel sind die folgenden zwei verschiedene Anweisungen:
printf("Hello, World! \n");
return 0;
Ein einzelnes Semikolon kann auch als leere Anweisung verwendet werden, was bedeutet, dass es nichts tut. Es wird häufig in bestimmten Schleifenstrukturen verwendet:
while (condition); // 空循环体,等待条件变化
Kommentare
Die Sprache C hat zwei Arten von Kommentaren:
// Single-line comment
mit//einzeiligen Kommentaren, beginnend mit (in C99 eingeführt). Diese Art von Kommentar erstreckt sich von//bis zum Ende der Zeile. Er kann für sich allein eine Zeile belegen oder am Ende einer Codezeile platziert werden.
/* Single-line comment */ /* Multi-line comment Multi-line comment Multi-line comment */
/* */Kommentare in diesem Format können einzeilig oder mehrzeilig sein und eignen sich für längere Kommentarszenarien wie Funktionsbeschreibungen und Modulüberschriften.
Beispiel
/*
Dies ist ein mehrzeiliger Kommentar
Er kann sich über mehrere Zeilen erstrecken
*/
int main() {
// Eine Nachricht ausgeben
printf("Hello, World!\n");
return 0;
}
Beim Verwenden von Kommentaren sind folgende Punkte zu beachten:
- Kommentare können nicht in Kommentaren verschachtelt werden (
/* /* */ */ist unzulässig). - Kommentare dürfen nicht in Zeichenkettenliteralen oder Zeichenkonstanten vorkommen.
- Kommentare werden für Menschen geschrieben, damit sie gelesen werden. Sie sollten prägnant und klar sein und sich darauf konzentrieren, „warum“ statt „was gemacht wurde“ zu erklären; der Code selbst sollte ausdrücken, „was er tut“.
- Gute Kommentierungsgewohnheiten sind ein wichtiger Bestandteil professioneller Programmierung und unterstützen die Code-Wartung und Teamzusammenarbeit.
Bezeichner
Bezeichner sind die Namen von Variablen, Funktionen, Arrays, Typen usw. in einem Programm, die vom Programmierer definiert werden. Bezeichner bestehen aus Buchstaben (Groß- oder Kleinbuchstaben), Ziffern und Unterstrichen, aber das erste Zeichen muss ein Buchstabe oder Unterstrich sein, keine Ziffer.
Ein Bezeichner beginnt mit einem Buchstaben A-Z oder a-z oder einem Unterstrich _, gefolgt von null oder mehr Buchstaben, Unterstrichen und Ziffern (0-9).
Satzzeichen wie @, $ und % sind in C-Bezeichnern nicht erlaubt. C ist eineGroß-/Kleinschreibung beachtendeProgrammiersprache. Daher sind in CManpowerundmanpowersind zwei verschiedene Bezeichner. Nachfolgend sind einige gültige Bezeichner aufgeführt:
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
Nachfolgend sind einige Beispiele für ungültige Bezeichner und die Gründe aufgeführt:
2abc // 错误:以数字开头 my-name // 错误:包含连字符 - float // 错误:与关键字重名 my name // 错误:包含空格
Namensvorschläge: Bezeichner sollten beschreibend sein und ihren Zweck klar ausdrücken. Übliche Namensstile sind Unterstrichbenennung (my_variable) und Lower-Camel-Case-Benennung (myVariable), halte es einfach innerhalb desselben Projekts konsistent. Bezeichner, die mit doppelten Unterstrichen beginnen__sind normalerweise vom Compiler oder der Standardbibliothek reserviert und sollten im Benutzercode vermieden werden.
Konstanten
Konstanten sind feste Werte, die sich während der Programmausführung nicht ändern. Es gibt zwei Hauptmöglichkeiten, Konstanten in C zu definieren: mit demconstSchlüsselwort oder verwenden Sie#defineMakrodefinition.
Konstanten können Ganzzahlkonstanten, Gleitkommakonstanten, Zeichenkonstanten, Aufzählungskonstanten usw. sein:
const int MAX = 100; // 整型常量 const float PI = 3.14159; // 浮点型常量 const char NEWLINE = '\n'; // 字符常量(转义字符)
Zu den üblichen Escape-Zeichen in Zeichenkonstanten gehören:
\n: Zeilenumbruch\t: horizontaler Tabulator\\: Backslash\': einfaches Anführungszeichen\0: Nullzeichen (Markierung für das Ende der Zeichenkette)
NutzungconstKonstanten, die mit definiert werden, besitzen Typinformationen, sodass der Compiler eine Typprüfung durchführen kann. Verglichen mit#defineMakros sind sicherer und der empfohlene Ansatz in C99 und später.
String-Literal
String-Literale sind Zeichenfolgen, die in doppelte Anführungszeichen eingeschlossen sind und zur Darstellung von Textdaten verwendet werden.
String-Literale werden im Speicher als Zeichenarrays gespeichert, und am Ende wird automatisch ein Nullzeichen angefügt\0(d. h. der Null-Terminator), das das Ende der Zeichenkette markiert.
char greeting[] = "Hello, World!"; // 编译器自动计算长度(包含 \0)
Hier sind einige wichtige Hinweise zu Zeichenkettenliteralen:
- "Hello" belegt tatsächlich 6 Bytes im Speicher:
'H'、'e'、'l'、'l'、'o'、'\0'。 - Zeichenkettenliterale werden in schreibgeschütztem Speicher abgelegt und können nicht geändert werden; wenn eine Änderung erforderlich ist, sollten sie in ein Zeichenarray kopiert werden.
- Zwei benachbarte Zeichenkettenliterale werden vom Compiler automatisch verkettet:
"Hello, " "World!"Äquivalent zu"Hello, World!"。 - Zeichen
'A'(Zeichenkonstanten) und Zeichenketten"A"(Zeichenkettenliteral) sind unterschiedlich; letzteres enthält'A'und'\0'Zwei Zeichen.
Operatoren
Operatoren werden verwendet, um verschiedene Operationen auszuführen, wie arithmetische, logische und Vergleichsoperationen. Operatoren wirken auf Operanden, bilden Ausdrücke und erzeugen Ergebnisse.
Die Sprache C hat eine große Vielfalt an Operatoren. Zu den gebräuchlichen gehören:
- Arithmetische Operatoren:
+,-,*,/,%(wobei/bei Ganzzahlen eine ganzzahlige Division durchführt,%Rest) - Relationale Operatoren:
==,!=,>,<,>=,<=(gibt 1 für wahr, 0 für falsch zurück) - Logische Operatoren:
&&(UND),||(ODER),!(NICHT), unterstützt Kurzschlussauswertung - Bitweise Operatoren:
&(bitweises UND),|(bitweises ODER),^(bitweises XOR),~(bitweises NICHT),<<(Linksverschiebung),>>(Rechtsverschiebung) - Zuweisungsoperatoren:
=,+=,-=,*=,/=,%=(Verbundzuweisung, wie z. B.a += bÄquivalent zua = a + b) - Inkrement-/Dekrementoperator:
++(Inkrement),--(Dekrement), das zwei Formen hat: Präfix (erst dekrementieren, dann auswerten) und Postfix (erst auswerten, dann dekrementieren) - Weitere Operatoren:
sizeof(berechnet die Bytegröße eines Typs oder einer Variablen),?:(Ternärer Operator),&(Adressoperator),*(Dereferenzierung),->(Zugriff auf Member über Zeiger),.(Direkter Member-Zugriff)
int a = 5, b = 10; int sum = a + b; // 算术运算符 +,sum = 15 int isEqual = (a == b); // 关系运算符 ==,isEqual = 0(假) int result = a << 1; // 位运算左移,result = 10(相当于 a * 2) a++; // 后缀自增,a 变为 6 int max = (a > b) ? a : b; // 三目运算符,max = b = 10
Operatoren haben einen Vorrang und eine Assoziativität: Der Vorrang bestimmt die Reihenfolge der Operationen, und die Assoziativität bestimmt die Auswertungsrichtung für Operatoren derselben Ebene. Wenn Sie sich beim Vorrang unsicher sind, empfiehlt es sich, Klammern für eine explizite Gruppierung zu verwenden, um die Lesbarkeit des Codes zu verbessern.
Schlüsselwörter
Die folgende Tabelle listet die reservierten Wörter in C auf. Diese reservierten Wörter können nicht als Konstantennamen, Variablennamen oder andere Bezeichnernamen verwendet werden; sie haben spezifische syntaktische Bedeutungen in der Sprache C.
| Schlüsselwörter | Beschreibung |
|---|---|
| auto | Deklariert automatische Variablen (die Standard-Speicherklasse für lokale Variablen, in modernem C selten explizit verwendet) |
| break | Bricht aus der aktuellen Schleife oder switch-Anweisung aus |
| case | Fallmarke in einer switch-Anweisung |
| char | Deklariert eine Variable vom Zeichentyp oder einen Funktionsrückgabetyp (belegt normalerweise 1 Byte) |
| const | Definiert eine schreibgeschützte Konstante; der Wert einer mit const modifizierten Variable kann nicht mehr geändert werden |
| continue | Beendet den aktuellen Schleifendurchlauf und startet direkt den nächsten Schleifendurchlauf |
| default | Standardzweig in einer switch-Anweisung (wird ausgeführt, wenn kein case zutrifft) |
| do | Der Schleifenkörper der do-while-Schleife; der Schleifenkörper wird mindestens einmal ausgeführt |
| double | Deklariert eine Gleitkommavariable mit doppelter Genauigkeit oder einen Funktionsrückgabetyp (belegt normalerweise 8 Byte) |
| else | Der negative Zweig einer bedingten Anweisung (wird mit if verwendet) |
| enum | Deklariert einen Aufzählungstyp, der verwendet wird, um eine Menge benannter ganzzahliger Konstanten zu definieren |
| extern | Deklariert, dass eine Variable oder Funktion in einer anderen Datei oder an einer anderen Stelle in der aktuellen Datei definiert ist |
| float | Deklariert eine Gleitkommavariable mit einfacher Genauigkeit oder einen Funktionsrückgabetyp (belegt normalerweise 4 Byte) |
| for | Die for-Schleifenanweisung, geeignet für Szenarien, in denen die Anzahl der Schleifendurchläufe im Voraus bekannt ist |
| goto | Unbedingte Sprunganweisung (sollte mit Vorsicht verwendet werden; kann die Lesbarkeit des Codes beeinträchtigen) |
| if | Bedingte Anweisung |
| int | Deklariert eine Integer-Variable oder den Rückgabetyp einer Funktion (belegt normalerweise 4 Bytes) |
| long | Deklariert eine Long-Integer-Variable oder den Rückgabetyp einer Funktion |
| Register | Schlägt dem Compiler vor, die Variable in einem Register zu speichern, um die Zugriffsgeschwindigkeit zu verbessern (moderne Compiler optimieren normalerweise automatisch) |
| return | Rückgabeanweisung einer Funktion, mit oder ohne Rückgabewert (void-Funktionen) |
| short | Deklariert eine Short-Integer-Variable oder den Rückgabetyp einer Funktion (belegt normalerweise 2 Bytes) |
| signed | Deklariert eine Variable vom Typ signed (kann negative Zahlen darstellen; Ganzzahlen sind standardmäßig vorzeichenbehaftet) |
| sizeof | Berechnet die Anzahl der Bytes, die von einem Datentyp oder einer Variable belegt werden (Operator zur Compile-Zeit) |
| static | Deklariert statische Variablen (lokale statische Variablen haben eine Lebensdauer, die bis zum Ende des Programms reicht; globale statische Variablen sind auf den Dateibereich beschränkt) |
| struct | Deklariert einen Strukturtyp, der Daten unterschiedlicher Typen zu einem Ganzen zusammenfasst |
| switch | Mehrfachauswahl-Anweisung, springt abhängig vom Wert des Ausdrucks zum entsprechenden case |
| typedef | Definiert einen neuen Alias für einen vorhandenen Datentyp, um die Lesbarkeit des Codes zu verbessern |
| unsigned | Deklariert eine Variable vom Typ unsigned (kann nur nicht-negative Zahlen darstellen, mit einem größeren Bereich) |
| Vereinigung | Deklariert einen Union-Typ; alle Mitglieder teilen sich denselben Speicherbereich |
| void | Deklariert eine Funktion ohne Rückgabewert oder ohne Parameter; wird auch zum Deklarieren eines typenlosen Zeigers verwendetvoid* |
| volatile | Deklariert, dass eine Variable durch externe Faktoren (wie Hardware oder Interrupts) geändert werden kann, und verbietet dem Compiler, Lese- und Schreibzugriffe auf die Variable zu optimieren |
| while | while-Schleifenanweisung, geeignet für Szenarien, in denen die Anzahl der Iterationen unbekannt, aber die Abbruchbedingung klar ist |
Neue Schlüsselwörter in C99
| _Bool | _Complex | _Imaginary | inline | restrict |
Das in C99 hinzugefügte Schlüsselwort wird hauptsächlich verwendet für: Unterstützung des Boolean-Typs (_Bool), Unterstützung komplexer Zahlen (_Complex、_Imaginary), Inline-Funktionsoptimierung (inline), Optimierung zur Beschränkung von Zeiger-Aliassen (restrict)。
Neue Schlüsselwörter in C11
| _Alignas | _Alignof | _Atomic | _Generic | _Noreturn |
| _Static_assert | _Thread_local |
Das in C11 hinzugefügte Schlüsselwort wird hauptsächlich verwendet für: Speicherausrichtungssteuerung (_Alignas、_Alignof), atomare Operationen und Multithreading-Unterstützung (_Atomic、_Thread_local), generische Auswahl (_Generic), statische Assertion (_Static_assert) und Kennzeichnen von Funktionen ohne Rückgabewert (_Noreturn)。
Leerraum in C
Eine Zeile, die nur Leerzeichen enthält, wird als Leerzeile bezeichnet; sie kann einen Kommentar enthalten, und der C-Compiler ignoriert sie vollständig.
In C werden Leerzeichen verwendet, um Leerraum (Leertaste), Tabulator (Tab), Zeilenumbruch und Kommentare zu beschreiben. Leerzeichen trennen die Teile einer Anweisung, sodass der Compiler erkennen kann, wo ein Element in der Anweisung (wie z. B.int) endet und wo das nächste Element beginnt. Deshalb in der folgenden Anweisung:
int age;
intundageZwischen ihnen muss mindestens ein Leerzeichen (normalerweise ein Leerraumzeichen) stehen, damit der Compiler sie unterscheiden kann. Andererseits in der folgenden Anweisung:
fruit = apples + oranges; // 获取水果的总数
fruitund=, oder=undapplesDas Leerzeichen zwischen ihnen ist nicht erforderlich, aber zur Verbesserung der Lesbarkeit können Sie nach Bedarf einige Leerzeichen hinzufügen.
Gute Abstands- und Einrückungsgewohnheiten sind ein wichtiger Bestandteil hochwertigen Codes; es wird empfohlen, die folgenden Konventionen zu befolgen:
- Verwenden Sie eine konsistente Einrückung (normalerweise 4 Leerzeichen oder 1 Tabulator), um die Hierarchie von Codeblöcken anzugeben.
- Leerzeichen auf beiden Seiten von Operatoren einfügen (z. B.
a + b), um Ausdrücke leichter lesbar zu machen. - Nach Kommas ein Leerzeichen einfügen (z. B.
int a, b, c;), um mehrere Elemente zu unterscheiden. - Verwenden Sie Leerzeilen angemessen, um logisch zusammengehörige Codeabschnitte zu trennen, was die allgemeine Lesbarkeit verbessert.