C言語は、汎用のプロセス指向のコンピュータープログラミング言語です。
1.Cプログラムの構造
C HelloWorldの例
Cプログラムには、主に次の部分が含まれています。
- プリプロセッサディレクティブ
- 関数
- 変数
- ステートメントと表現
- 注釈
例:
// 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件
#include <stdio.h>
// 是主函数,程序从这里开始执行
int main()
{
/* 我的第一个 C 程序,注释内容 */
///*...*/ 将会被编译器忽略
printf("Hello, World! \n");
//结束程序,并返回0
return 0;
}
2.Cの基本文法
2.1Cのトークン
Cプログラムは、キーワード、識別子、定数、文字列値、または記号などのさまざまなトークンで構成されています。
2.2セミコロン
Cプログラムでは、セミコロンはステートメントの終わりです。つまり、各ステートメントはセミコロンで終了する必要があります。論理エンティティの終わりを示します。
2.3注意事項
C言語には2つのコメント方法があります
。//単一行コメント
/ * * /この形式のコメントは、単一行または複数行にすることができます。
注:コメント内にコメントをネストすることはできません。また、コメントを文字列または文字値に表示することはできません。
2.4識別子
C識別子は、変数、関数、またはその他のユーザー定義項目を識別するために使用される名前です。識別子は、文字AZまたはazまたはアンダースコア_で始まり、その後に0個以上の文字、アンダースコア、および数字(0〜9)が続きます。
注:Cは大文字と小文字を区別するプログラミング言語です
2.5キーワード
それは予約語です。これらの予約語は、定数名、変数名、またはその他の識別子名として使用することはできません。
2.6Cスペース
スペースのみを含む行は空白行と呼ばれ、コメントが含まれる場合があり、Cコンパイラーはそれらを完全に無視します。
Cでは、スペースは空白、タブ、改行、およびコメントを説明するために使用されます。スペースはステートメントのさまざまな部分を区切り、コンパイラーがステートメント内の要素(intなど)が終了する場所と次の要素が開始する場所を認識できるようにします。
fruit = apples + oranges; // 获取水果的总数
果物と=、または=とリンゴの間のスペース文字は必要ありませんが、読みやすさを向上させるために、必要に応じていくつかのスペースを追加できます。
3.Cデータ型
C言語では、データ型は、さまざまな型の変数または関数を宣言するために使用されるさまざまなシステムを指します。変数のタイプによって、変数ストレージが占めるスペースと、格納されているビットパターンの解釈方法が決まります。
3.1 Cのタイプは、次の4つのカテゴリに分類できます。
- 基本型:整数型と浮動小数点型を含む算術型
- 列挙型:算術型であり、特定の離散値と変数のみをプログラムで割り当てることができることを定義するために使用されます
- voidタイプ:タイプ指定子voidは、使用可能な値がないことを示します
- 派生型:ポインタ型、配列型、構造型、共用体型、関数型
配列型と構造型は、まとめて集計型と呼ばれます。
関数の型は、関数の戻り値の型を指します。
3.2標準整数型のストレージサイズと値の範囲の詳細
注:さまざまなタイプのストレージのサイズはシステムのビット数に関連していますが、現在は64ビットシステムが主なものです。
特定のプラットフォームで特定の型または特定の変数の正確なサイズを取得するには、sizeof演算子を使用できます。式sizeof(type)は、オブジェクトまたはタイプのストレージバイトサイズを取得します。
printf( "intストレージサイズ:%lu \ n"、sizeof(int));
3.3標準浮動小数点型の記憶域サイズ、値の範囲、および精度の詳細この
例では、浮動小数点型が占める記憶域スペースとその範囲値を出力します。
#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.4voidタイプ
voidタイプは使用可能な値を指定しません
4.変数
- 変数は、実際にはプログラムが操作できるメモリ領域の名前にすぎません。Cの各変数には特定のタイプがあります。タイプによって、変数ストレージのサイズとレイアウトが決まります。この範囲の値はメモリに格納でき、演算子を変数に適用できます。
- 変数の名前は、文字、数字、および下線文字で構成できます。文字またはアンダースコアで始まる必要があります。Cでは大文字と小文字が区別されるため、大文字と小文字は異なります。
基本タイプ:
C言語では、列挙型、ポインター、配列、構造体、共用体など、他のさまざまなタイプの変数を定義することもできます。
4.1変数の定義
変数の定義は、変数のストレージを作成する場所と、変数のストレージを作成する方法をコンパイラーに指示することです。変数定義はデータ型を指定し、その型の1つ以上の変数のリストを含みます。
type variable_list;
typeは、char、w_char、int、float、double、または任意のユーザー定義オブジェクトの有効なCデータ型である必要があります。variable_listは1つ以上の識別子名で構成でき、複数の識別子はコンマで区切ります。
例:
int i, j, k;
char c, ch;
float f, salary;
double d;
変数は宣言時に初期化できます(初期値を指定してください)。初期化子は、等号とそれに続く定数式で構成されます。
type variable_name = value;
例:
extern int d = 3, f = 5; // d 和 f 的声明与初始化
int d = 3, f = 5; // 定义并初始化 d 和 f
byte z = 22; // 定义并初始化 z
char x = 'x'; // 变量 x 的值为 'x'
初期化なしの定義:静的ストレージ期間の変数は暗黙的にNULLに初期化され(すべてのバイトの値は0)、他のすべての変数の初期値は未定義です。
4.2変数の宣言
変数宣言は、指定された型と名前で変数が存在することをコンパイラーに保証するため、コンパイラーは変数の完全な詳細を知らなくてもコンパイルを続行できます。
変数宣言はコンパイル時にのみ意味があり、コンパイラーはプログラムがリンクされるときに実際の変数宣言を必要とします。
変数宣言には2つのケースがあります。
1. 1つは、ストレージスペースを確立する必要があることです。例:int aは、宣言されたときにすでにストレージスペースを確立しています。
2.もう1つは、externキーワードを使用して変数名を定義せずに宣言することにより、ストレージスペースを確立する必要はありません。
次に例を示します。externinta変数aは、他のファイルで定義できます。
3. externキーワードがない限り、それは変数の定義です。
extern int i; //声明,不是定义
int i; //声明,也是定义
あるソースファイル内の別のソースファイルで定義された変数を参照する必要がある場合は、参照されるファイル内の変数にexternキーワード宣言を追加するだけで済みます。
#include <stdio.h>
/*外部变量声明*/
extern int x ;
extern int y ;
int addtwonum()
{
return x+y;
}
それを引用する:
#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.3Cの左辺値と右辺値
Cには2つのタイプの式があります。
1.左辺値(左辺値):メモリ位置を指す式は左辺値式と呼ばれます。左側の値は、割り当て番号の左側または右側に表示できます。
2.右辺値:右辺値という用語は、メモリ内のあるアドレスに格納されている値を指します。右辺値は、割り当てることができない式です。つまり、右辺値は割り当て番号の右側には表示できますが、割り当て番号の左側には表示できません。
変数は左辺値であるため、割り当て番号の左側に表示できます。数値リテラルは右辺値であるため、割り当てることも、割り当て番号の左側に表示することもできません。
5.一定
定数は固定値であり、プログラムの実行中に変更されることはありません。これらの固定値はリテラルとも呼ばれます。
定数は、整数定数、浮動小数点定数、文字定数、文字列リテラルなどの基本的なデータ型、および列挙型定数にすることができます。
定数は、定義後に定数の値を変更できないことを除いて、通常の変数に似ています。
5.1整数定数
整数定数は、10進数、8進数、または16進数の定数です。接頭辞は基数を指定します。0xまたは0Xは16進数を意味し、0は8進数を意味し、接頭辞がない場合、デフォルトでは10進数を意味します。
整数定数には接尾辞を付けることもできます。接尾辞はUとLの組み合わせです。Uは符号なし整数(符号なし)を表し、Lは長整数(long)を表します。接尾辞は大文字または小文字にすることができ、UとLの順序は任意です。
5.2浮動小数点定数
浮動小数点定数は、整数部分、小数点、小数部分、および指数部分で構成されます。10進形式または指数形式を使用して、浮動小数点定数を表すことができます。
10進形式で表現する場合は、整数部分、小数部分、またはその両方を含める必要があります。
指数形式で表現する場合は、小数点、指数、またはその両方を含める必要があります。符号付き指数はeまたはEで導入されます。
3.14159 /* 合法的 */
314159E-5L /* 合法的 */
510E /* 非法的:不完整的指数 */
210f /* 非法的:没有小数或指数 */
.e55 /* 非法的:缺少整数或分数 */
5.3文字定数
文字定数は一重引用符で囲みます。たとえば、「x」はchar型の単純な変数に格納できます。
文字定数は、通常の文字('x'など)、エスケープシーケンス( '\ t'など)、または一般文字( '\ u02C0'など)にすることができます。
Cには、いくつかの特定の文字があります。それらの前に円記号が付いている場合、それらは特別な意味を持ち、改行(\ n)やタブ(\ t)などを表すために使用されます。
5.4文字列定数
文字列リテラルまたは定数は二重引用符 ""で囲まれています。文字列には、文字定数に類似した文字(通常の文字、エスケープシーケンス、および一般文字)が含まれます。
スペースを区切り文字として使用して、長い文字列定数を行に分割できます。
5.5定数を定義する
Cでは、定数を定義する2つの簡単な方法があります
。1。#defineプリプロセッサを使用する
#define identifier value
2.constキーワードを使用します
constプレフィックスを使用して、指定したタイプの定数を宣言できます
const type variable = value;
注:定数を大文字として定義することは、優れたプログラミング手法です。