C-Sprachen lernen [1] - Verstehen Sie die grundlegende Grammatik

Die Sprache C ist eine universelle, prozessorientierte Computerprogrammiersprache.

1. C Programmstruktur

C Hallo Welt Beispiel

Das C-Programm umfasst hauptsächlich die folgenden Teile:

  1. Präprozessor-Direktive
  2. Funktion
  3. Variable
  4. Aussage & Ausdruck
  5. Anmerkung

Beispiele:

// 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件
#include <stdio.h>
// 是主函数,程序从这里开始执行
int main()
{
    
    
   /* 我的第一个 C 程序,注释内容 */
   ///*...*/ 将会被编译器忽略
   printf("Hello, World! \n");
   //结束程序,并返回0
   return 0;
}

2. C grundlegende Grammatik

2.1 Cs Token

Ein C-Programm besteht aus verschiedenen Token, die Schlüsselwörter, Bezeichner, Konstanten, Zeichenfolgenwerte oder ein Symbol sein können.

2.2 Semikolon

In C-Programmen ist das Semikolon das Ende einer Anweisung. Mit anderen Worten, jede Anweisung muss mit einem Semikolon enden. Es zeigt das Ende einer logischen Entität an.

2.3 Hinweise

Die Sprache C verfügt über zwei Kommentarmethoden:
// Einzeiliger Kommentar
/ * * / Kommentare in diesem Format können einzeilig oder mehrzeilig sein.
Hinweis: Sie können Kommentare nicht in Kommentaren verschachteln und Kommentare können nicht in Zeichenfolgen oder Zeichenwerten angezeigt werden.

2.4 Kennung

Der C-Bezeichner ist der Name, mit dem Variablen, Funktionen oder andere benutzerdefinierte Elemente identifiziert werden. Ein Bezeichner beginnt mit den Buchstaben AZ oder az oder Unterstrich _, gefolgt von null oder mehr Buchstaben, Unterstrichen und Zahlen (0-9).
Hinweis: C ist eine Programmiersprache, bei der zwischen Groß- und Kleinschreibung unterschieden wird

2.5 Schlüsselwörter

Das sind reservierte Worte. Diese reservierten Wörter können nicht als Konstantennamen, Variablennamen oder andere Bezeichnernamen verwendet werden.

2,6 C Raum

Zeilen, die nur Leerzeichen enthalten, werden als Leerzeilen bezeichnet und können Kommentare enthalten. Der C-Compiler ignoriert sie vollständig.
In C werden Leerzeichen verwendet, um Leerzeichen, Tabulatoren, Zeilenumbrüche und Kommentare zu beschreiben. Leerzeichen trennen die verschiedenen Teile der Anweisung, sodass der Compiler erkennen kann, wo ein Element (z. B. int) in der Anweisung endet und wo das nächste Element beginnt.

fruit = apples + oranges;   // 获取水果的总数

Das Leerzeichen zwischen Obst und =, oder = und Äpfeln ist nicht erforderlich. Um die Lesbarkeit zu verbessern, können Sie nach Bedarf einige Leerzeichen hinzufügen.

3. C Datentyp

In der Sprache C beziehen sich Datentypen auf eine Vielzahl von Systemen, mit denen Variablen oder Funktionen verschiedener Typen deklariert werden. Der Variablentyp bestimmt den vom Variablenspeicher belegten Speicherplatz und die Interpretation des gespeicherten Bitmusters.

3.1 Typen in C können in die folgenden 4 Kategorien unterteilt werden

  1. Grundtypen: arithmetische Typen, einschließlich Ganzzahl- und Gleitkommatypen
  2. Aufzählungstyp: ist ein arithmetischer Typ, mit dem definiert wird, dass nur bestimmte diskrete Werte und Variablen im Programm zugewiesen werden können
  3. Void-Typ: Der Typbezeichner void gibt an, dass kein Wert verfügbar ist
  4. Abgeleitete Typen: Zeigertyp, Array-Typ, Strukturtyp, Vereinigungstyp, Funktionstyp

Array-Typen und Strukturtypen werden zusammen als Aggregattypen bezeichnet.
Der Typ einer Funktion bezieht sich auf den Typ des Rückgabewerts der Funktion.

3.2 Details zur Speichergröße und zum Wertebereich von Standard-Integer-Typen
Fügen Sie hier eine Bildbeschreibung ein

Hinweis: Die Größe verschiedener Speichertypen hängt von der Anzahl der Bits im System ab. Derzeit sind jedoch 64-Bit-Systeme die wichtigsten.
Um die genaue Größe eines bestimmten Typs oder einer bestimmten Variablen auf einer bestimmten Plattform zu erhalten, können Sie den Operator sizeof verwenden. Der Ausdruck sizeof (Typ) gibt die Speicherbyte-Größe des Objekts oder Typs an.
printf ("int Speichergröße:% lu \ n", sizeof (int));

3.3 Details zur Speichergröße, zum Wertebereich und zur Genauigkeit des Standard-Gleitkommatyps Im
Fügen Sie hier eine Bildbeschreibung ein
Beispiel werden der vom Gleitkommatyp belegte Speicherplatz und sein Bereichswert ausgegeben:

#include <stdio.h>
#include <float.h>
//头文件 float.h 定义了宏,在程序中可以使用这些值和其他有关实数二进制表示的细节
int main()
{
    
    
   printf("float 存储最大字节数 : %lu \n", sizeof(float));
   printf("float 最小值: %E\n", FLT_MIN );
   printf("float 最大值: %E\n", FLT_MAX );
   printf("精度值: %d\n", FLT_DIG );
   
   return 0;
}
//%E 为以指数形式输出单、双精度实数
//在 Linux 上编译并执行上面的程序时,它会产生下列结果
float 存储最大字节数 : 4 
float 最小值: 1.175494E-38
float 最大值: 3.402823E+38
精度值: 6

3.4 void type
void type gibt keinen verfügbaren Wert an
Fügen Sie hier eine Bildbeschreibung ein

4. Variablen

  • Eine Variable ist eigentlich nur der Name eines Speicherbereichs, den das Programm bearbeiten kann. Jede Variable in C hat einen bestimmten Typ. Der Typ bestimmt die Größe und das Layout des Variablenspeichers. Werte in diesem Bereich können im Speicher gespeichert und Operatoren auf Variablen angewendet werden.
  • Der Name einer Variablen kann aus Buchstaben, Zahlen und Unterstrichen bestehen. Es muss mit einem Buchstaben oder Unterstrich beginnen. Groß- und Kleinbuchstaben unterscheiden sich, da bei C zwischen Groß- und Kleinschreibung unterschieden wird.

Grundtypen: Die
Fügen Sie hier eine Bildbeschreibung ein
Sprache C ermöglicht auch die Definition verschiedener anderer Variablentypen wie Aufzählungen, Zeiger, Arrays, Strukturen, Gewerkschaften usw.

4.1 Definition von Variablen

Die Variablendefinition soll dem Compiler mitteilen, wo der Speicher der Variablen erstellt werden soll und wie der Speicher der Variablen erstellt werden soll. Die Variablendefinition gibt einen Datentyp an und enthält eine Liste einer oder mehrerer Variablen dieses Typs.
type variable_list;

Der Typ muss ein gültiger C-Datentyp sein, der char, w_char, int, float, double oder ein beliebiges benutzerdefiniertes Objekt sein kann. variable_list kann aus einem oder mehreren Bezeichnernamen bestehen, und mehrere Bezeichner werden durch Kommas getrennt.

Beispiel:

int    i, j, k;
char   c, ch;
float  f, salary;
double d;

Variablen können zum Zeitpunkt der Deklaration initialisiert werden (geben Sie einen Anfangswert an). Der Initialisierer besteht aus einem Gleichheitszeichen, gefolgt von einem konstanten Ausdruck:
type variable_name = value;

Beispiel:

extern int d = 3, f = 5;    // d 和 f 的声明与初始化
int d = 3, f = 5;           // 定义并初始化 d 和 f
byte z = 22;                // 定义并初始化 z
char x = 'x';               // 变量 x 的值为 'x'

Definition ohne Initialisierung: Variablen mit statischer Speicherdauer werden implizit auf NULL initialisiert (der Wert aller Bytes ist 0), und die Anfangswerte aller anderen Variablen sind undefiniert.

4.2 Deklaration von Variablen

Die Variablendeklaration stellt dem Compiler sicher, dass die Variable mit dem angegebenen Typ und Namen vorhanden ist, sodass der Compiler weiter kompilieren kann, ohne die vollständigen Details der Variablen zu kennen.

Die Variablendeklaration hat nur zur Kompilierungszeit ihre Bedeutung, und der Compiler benötigt die eigentliche Variablendeklaration, wenn das Programm verknüpft ist.

Es gibt zwei Fälle von Variablendeklaration:

1. Eine ist die Notwendigkeit, Speicherplatz einzurichten. Beispiel: int a hat bereits Speicherplatz eingerichtet, als es deklariert wurde.

2. Der andere muss keinen Speicherplatz einrichten, indem er das Variablenname mit dem Schlüsselwort extern deklariert, ohne es zu definieren.

Zum Beispiel: extern int a Die Variable a kann in anderen Dateien definiert werden.

3. Sofern kein externes Schlüsselwort vorhanden ist, handelt es sich um die Definition einer Variablen.

extern int i; //声明,不是定义
int i; //声明,也是定义

Wenn Sie auf eine Variable verweisen müssen, die in einer anderen Quelldatei in einer Quelldatei definiert ist, müssen Sie der Variablen in der referenzierten Datei nur die externe Schlüsselwortdeklaration hinzufügen.

#include <stdio.h>
/*外部变量声明*/
extern int x ;
extern int y ;
int addtwonum()
{
    
    
    return x+y;
}

Zitiert es:

#include <stdio.h>
  
/*定义两个全局变量*/
int x=1;
int y=2;
int addtwonum();
int main(void)
{
    
    
    int result;
    result = addtwonum();
    printf("result 为: %d\n",result);
    return 0;
}

4.3 L-Werte und R-Werte in C.

Es gibt zwei Arten von Ausdrücken in C:

1. L-Wert (l-Wert): Ein Ausdruck , der auf einen Speicherort verweist, wird als l-Wert-Ausdruck bezeichnet. Der linke Wert kann links oder rechts von der Zuweisungsnummer angezeigt werden.

2. R-Wert: Der Begriff r-Wert bezieht sich auf den Wert , der an einer bestimmten Adresse im Speicher gespeichert ist . Ein r-Wert ist ein Ausdruck, der nicht zugewiesen werden kann. Das heißt, ein r-Wert kann auf der rechten Seite der Zuweisungsnummer, aber nicht auf der linken Seite der Zuweisungsnummer angezeigt werden.

Die Variable ist ein l-Wert, daher kann sie links von der Zuweisungsnummer angezeigt werden. Numerische Literale sind r-Werte, daher können sie nicht zugewiesen werden und können nicht auf der linken Seite der Zuweisungsnummer angezeigt werden.

5. Konstante

Konstanten sind feste Werte und ändern sich während der Programmausführung nicht. Diese festen Werte werden auch als Literale bezeichnet.

Konstanten können beliebige grundlegende Datentypen sein, z. B. Ganzzahlkonstanten, Gleitkommakonstanten, Zeichenkonstanten oder Zeichenfolgenliterale sowie Aufzählungskonstanten.

Konstanten sind wie reguläre Variablen, außer dass der Wert einer Konstante nach ihrer Definition nicht mehr geändert werden kann.

5.1 Ganzzahlkonstante

Ganzzahlige Konstanten können Dezimal-, Oktal- oder Hexadezimal-Konstanten sein. Das Präfix gibt den Radix an: 0x oder 0X bedeutet hexadezimal, 0 bedeutet oktal und ohne Präfix bedeutet es standardmäßig dezimal.

Eine Ganzzahlkonstante kann auch ein Suffix haben. Das Suffix ist eine Kombination aus U und L. U steht für eine Ganzzahl ohne Vorzeichen (ohne Vorzeichen), und L steht für eine lange Ganzzahl (long). Das Suffix kann in Groß- oder Kleinbuchstaben angegeben werden, und die Reihenfolge von U und L ist beliebig.

5.2 Gleitkommakonstanten

Gleitkommakonstanten bestehen aus einem ganzzahligen Teil, einem Dezimalpunkt, einem Dezimalteil und einem Exponententeil. Sie können eine Dezimalform oder eine Exponentialform verwenden, um Gleitkommakonstanten darzustellen.

Wenn es in Dezimalform ausgedrückt wird, muss es einen ganzzahligen Teil, einen Dezimalteil oder beides enthalten.

In Exponentialform muss der Dezimalpunkt, Exponent oder beides enthalten sein. Vorzeichenbehaftete Exponenten werden mit e oder E eingeführt.

3.14159       /* 合法的 */
314159E-5L    /* 合法的 */
510E          /* 非法的:不完整的指数 */
210f          /* 非法的:没有小数或指数 */
.e55          /* 非法的:缺少整数或分数 */

5.3 Zeichenkonstanten

Zeichenkonstanten werden in einfache Anführungszeichen gesetzt. Beispielsweise kann 'x' in einer einfachen Variablen vom Typ char gespeichert werden.

Die Zeichenkonstante kann ein gewöhnliches Zeichen (wie 'x') , eine Escape- Sequenz (wie '\ t') oder ein allgemeines Zeichen (wie '\ u02C0') sein.

In C gibt es einige bestimmte Zeichen. Wenn ihnen ein Backslash vorangestellt ist, haben sie eine besondere Bedeutung und werden zur Darstellung von Zeilenumbrüchen (\ n) oder Tabulatoren (\ t) verwendet.

Fügen Sie hier eine Bildbeschreibung ein

5.4 String-Konstanten

String-Literale oder Konstanten werden in doppelte Anführungszeichen "" eingeschlossen. Eine Zeichenfolge enthält Zeichen, die Zeichenkonstanten ähnlich sind: normale Zeichen, Escape-Sequenzen und allgemeine Zeichen.

Sie können Leerzeichen als Trennzeichen verwenden, um eine lange Zeichenfolgenkonstante in Zeilen zu unterteilen.

5.5 Konstanten definieren

In C gibt es zwei einfache Möglichkeiten, Konstanten zu definieren:
1. Verwenden Sie den Präprozessor #define

#define identifier value

2. Verwenden Sie das Schlüsselwort const

Mit dem Präfix const können Sie Konstanten des angegebenen Typs deklarieren

const type variable = value;

Hinweis: Es ist eine gute Programmierpraxis, Konstanten als Großbuchstaben zu definieren.

Ich denke du magst

Origin blog.csdn.net/qq_46009608/article/details/110200517
Empfohlen
Rangfolge