【C言語】真の初心者のためのC言語文法入門

序文

この記事は筆者の C 言語の理解を記録したものであり、C 言語の基礎がまったくない人に適しています。初めて C 言語を学習する場合は、まずこの内容を理解しておくと、その後の知識の習得が難しくないと思います。 。誤字脱字や内容の誤解がありましたらご指摘ください。

1. 最初の C 言語プログラム – print Hello world!

Hello world を出力するプログラム全体は次のとおりです。

#include <stdio.h>

int main()
{
    
    
	printf("Hello world!\n");
	return 0;
}

まず中国語と英語の記号に関する注意メイン関数< a i=4> と printf 関数 では、Hello world! を出力するプログラムについて説明します。

1.1. 中国語と英語の記号

すべての記号は英語でなければなりません。プログラム内で中国語の記号を使用すると、エラーが報告されます。たとえば、中国語 () と英語 () は見た目が異なります。
printf 関数では二重引用符に加えて、中国語の記号も使用できます。

1.2. メイン関数(メイン関数)

完全な C 言語コードである限り、main 関数が存在する必要があります。固定フォーマット次のように:

int main()
{
    
    
	//程序代码部分:这一行包含了整个程序的具体实现
	return 0;
}

int: int は integer (整数) の略で、メインを意味します。関数の戻り値の型整数(整数型)です。

main: メイン関数は次のとおりです。プログラムエントリーそして主な機能一つだけある

main 関数の後の括弧 () 内にパラメータが配置されます (何も配置されていない場合はパラメータはありません)。

一対の中括弧 { } 内は次のとおりです。関数本体, これは main 関数の関数本体であるため、main 関数本体と呼ばれます。メイン関数本体のプログラム コード部分は、メイン関数本体の中核であり、プログラムの特定の実装が含まれます。
すべて

2 つの // は、次のコンテンツがコメント、// に続くコメントは、プログラムの実行時に無視されます。

関数本体内のステートメントの前に次の文字を付ける必要があります。インデント(4 つのスペースは Tab キーに相当します)。

retrun 0;: return 0 は、プログラムが正常に終了し、戻り値が 0 であることを意味します。この 0 は int に対応し、return の後には整数が続き、関数の戻り値の型は int です。return 0 の後にセミコロンがあることに注意してください。

セミコロン ; はステートメントの終わりを示します。 C 言語では、各ステートメントは次で終わる必要があります。セミコロンで終わるそうでない場合、コンパイラはエラーを報告します。

1.3. printf関数

たとえ話から始めましょう。ペンで書きたいが、ペンを持っておらず、自分でペンを作ることもできない場合、デスクメイトからペンを借りるしかありません。私のデスクメイトの机の上にペンボックスがあり、その中にはたくさんの種類の文房具が入っています。デスクメイトにペンを借りたい場合は、まず尋ねてから彼の筆箱からペンを取り出して使用する必要があります。
printf 関数は私が使いたいペンのようなものですが、printf 関数を自分で書くことはできません (または、printf 関数を自分で書くのが面倒です...冗談です)。したがって、stdio.h ファイルという名前の人に尋ねる必要があります。ファイルの内容を使用する前に挨拶してください。これは、プログラムの最初の行が #include <stdio.h> である必要がある理由を説明できますC言語自体に存在するprintf関数を呼び出すため

#include printf は stdio.h ファイル内の関数です

printf(" "); : print 関数の略で、意味は出力関数、特にデータの印刷に使用されます。 printf はライブラリ関数、つまり C 言語自体によって提供される関数です。
この関数はすぐに実行する必要があります括弧 ( )、括弧には次のペアが含まれます。二重引用符「」、プログラムに出力させたいテキスト、数値、記号を二重引用符で囲んで自由に入力できます (ここでの数値は文字のみを表すことに注意してください。整数と小数の出力方法については 3.6 で説明します)。最後セミコロン忘れてはいけない 。セミコロンは、このステートメント行の終わりを示します。

1.4. 補足: Hello world!次の「\n」

「 \n 」は改行文字であり、意味は改行、エスケープ文字の 1 つです。スラッシュ \ を追加すると、元の意味が小文字の「n」文字に変わります。

2. データ型

データ型、変数、および定数は、一緒に理解するのが最も効果的です。

IDカードの名前、ID番号、生年月日、住所など、生活の中にはさまざまな種類のデータがあります。名前は言葉で表現され、生年月日は数字で表現されます。コンピューターがさまざまな種類のデータを知りたい場合は、データを分類する必要があります。例えば文字「0」と数字の0数字の 0 はコンピュータに 0 として保存され、文字「0」はコンピュータに 48 として保存されます。データを区別するためのデータ型が存在しない場合、整数 48 と文字 '0' が混同されます。
すべて

2.1. データ型の分類

データ型はC言語に分けられます組み込みのデータ型そしてカスタムタイプ、カスタム型については構造内で説明するため、ここでの主な焦点は組み込みデータ型です。
すべて

2.2. 組み込み型間で共通のデータ型

char は文字型です。キーボードで入力できるすべての単語は、「y」、「&」、「3」、「=」などの文字です。漢字は 2 文字を占めます。文字の本質は文字の ASCII 値であり、ASCII コード値は整数であるため、文字の種類を分類するときは、整数ファミリーに分けることができます。。文字は一重引用符で囲む必要があることに注意してください。一重引用符がなければ、文字ではありません。 ! !

intは整数型です。整数型は整数型で、正の整数、負の整数、数値 0 が含まれます。ただし、int 型の整数には範囲があります (約 -21 億から 21 億。もちろん、すべてのデータ型には範囲があり、メモリ領域の一部には本質的に制限があります)。
short は短い整数です。 int型に比べて範囲が狭いです。
long は長整数です。 int型に比べて範囲が広いです。

float は単精度浮動小数点型です。浮動小数点数型は10進数型です。
double は倍精度浮動小数点型です。。 float型より高精度です。

質問: 整数が長整数と短整数に分けられ、浮動小数点型も単精度と倍精度に分けられるのはなぜですか?
回答: メモリ スペースを合理的に割り当てるには、たとえば、int 型の 1 を格納することによって占有されるスペースは、long 型の 1 を格納することによって占有されるスペースより小さくなければなりません。これにより、一定量のスペースが節約されます。 。

2.2.1 各データ型が占有するメモリ空間

すべて

質問: Long 型と Long Long 型のメモリ空間が両方とも 4 以上であるのはなぜですか?
回答: C 言語はメモリ空間のみを指定します: Long Long 型 >= Long 型 >= int 型、異なるコンパイラとオペレーティング システムでは異なるメモリ空間が割り当てられます。

メモリ スペースの説明:
すべて

コンピュータ単位の換算:
すべて

3. 変数と定数

3.1. 変数とは何ですか?

変数: C 言語の変数は、数学関数の変数とは異なります。変数はデータを保存するために使用されるメモリ空間です, どのような種類のデータが格納されるかについては、変数のデータ型によって異なります。

コードを使用した例を次に示します。

int main()
{
    
    
	int a;//定义一个名字为a的变量,变量a的数据类型是int类型,也就是说变量a能存储一个整型数据。
	return 0;
}

int を説明するための図; このコード行:
すべて

3.2. 変数の命名規則と提案

命名規則:

  • 大文字と小文字の英字、アンダースコア _、または数字のみで構成できます
  • 数字で始めることはできません
  • 大文字と小文字を区別
  • 変数名はキーワードと同じにすることはできません

変数名の例:

int main()
{
    
    
	int char;//error,char是关键字
	long Char;//OK,因为大小写区分
	
	float 2B;//error,因为以数字开头了
	double _2B;//OK
	
	char !1@E$;//error,符号除了下划线 _ 都不能出现在变量名上
	
	return 0;
}

変数の名前付けに関する提案:
名前は意味のあるものにする必要があります。たとえば、年齢を保存する場合は、変数を定義するときに変数に age という名前を付けることができます。変数。

int main()
{
    
    
	int age;//定义一个整形变量,变量名是age
	return 0;
}

3.3. 定数とは何ですか?

絶え間ない:定数とは不変の量であり、データの一種です。たとえば、文字「a」、整数の 123、および 10 進数の 6.66 などです。たとえば、変数がメガネケースの場合、定数はメガネケースに入れることができるメガネになります。

3.4. 変数にデータ(定数)を格納させる方法

上記の変数名 age を例として取り上げます。

int main()
{
    
    
	int age;//定义一个整形变量,变量名是age
	age = 18;//把常量18赋值给变量age,此时的变量age储存的是18
	return 0;
}

変数の定義とその変数への値の代入を同時に行うこともできます (上位コードと下位コードは同等です)。

int main()
{
    
    
	int age = 18;//定义整型变量age的同时把18赋值给age,此时的变量age储存的是18
	return 0;
}

3.5. 代入演算子「=」

C 言語の等号 ' = ' は、数学的な意味で両辺が等しいという意味ではなく、代入、つまりデータ (等号の右側) を代入するという意味です。変数 (等号の左側) に変換します。
等号必ず 1 つある変数
等号的になることができますデータ(定数) は、等号の右側のデータを左側の変数に代入することを意味します。代入前に変数にデータが格納されていた場合は、代入後に元のデータが置き換えられます。
等号別の種類でもいいよ変数、右側の変数に格納されているデータが左側の変数に割り当てられていることを示します。

例:

int main()
{
    
    
	int a = 10;
	int b = 20;
	//在下面a=b执行之前,变量a存储的是10,变量b存储的是20
	a = b; 
	//a=b执行之后,变量a里的10被替换成20,变量b里的数据还是20不变
	return 0;
}

図:
すべて

3.6. 変数内のデータを出力するにはどうすればよいですか?

#include<stdio.h>
int main()
{
    
    
	char alphabet = 'a';//定义了一个名为alphabet的字符变量,并把字符'a'赋值给变量alphabet.
	int number = 123;

	printf("%c\n", alphabet);
	printf("%d\n", number);
	printf("%c %d",alphabet,number);
    return 0;
}

プログラムの実行結果:
すべて
printf(""Hello world!"); と比較すると、最後に余分なカンマと変数名が追加され、%c % があります。二重引用符内の d 形式 (詳細は 3.6.1 で説明)、形式が異なると出力される結果も異なります。たとえば、次の例:

#include<stdio.h>
int main()
{
    
    
	char alphabet = 'a';//定义了一个名为alphabet的字符变量,并把字符'a'赋值给变量alphabet.
	printf("%c\n",alphabet);
	printf("%d\n",alphabet);
	return 0;
}

プログラムの実行結果:
すべて

%c は変数が文字形式で出力されることを意味し、%d は変数が整数形式で出力されることを意味します。
明らかに、アルファベット変数のデータが出力されますが、出力結果は異なります。1 つは文字「a」で、もう 1 つは整数 97 であり、書式制御の影響を受けます。二重引用符で囲みます。

3.6.1. 各データの共通フォーマット制御

すべて

3.7.scanf関数

先ほどの例では、プログラムに書き込んだデータを変数に代入していましたが、プログラムの実行中にキーボードでデータを入力することはできないのでしょうか? printf出力関数とscanf入力関数があります。同様に、scanf 関数を呼び出す前に、プログラムの先頭に #include

例:

#include<stdio.h>
int main()
{
    
    
	int age;
	printf("请输入你的年龄:");
	scanf("%d",&age);
	printf("你的年龄是%d岁",age);
	return 0;
}

プログラムが実行されます:
すべて
キーボードで整数を入力するまで、後ろのカーソルが点滅し続けます。入力後 Enter を押すと、プログラムが実行を続けます:
すべて

scanf 関数内の二重引用符は、整数変数 age が定義されており、年齢の入力時に整数形式制御が使用されるため、形式制御です。
scanf 関数では、カンマの後の変数に加えて、変数の前にアドレス文字 & も必要です。年齢変数のアドレスを知っている必要があります。入力したデータは age 変数に保存できます。

おすすめ

転載: blog.csdn.net/weixin_73276255/article/details/131234573