Cは、普遍的な言語である手続きのためのコンピュータプログラム設計言語。
C言語は、もともとのシステム開発作業、オペレーティングシステムの特に手続きのために使用されました。アセンブリ言語コードで記述された速度によって生成されるC言語コードはそれほどC言語の開発言語を用いたシステムとして、ほぼ同じ速度であるからです。以下の特徴のアプリケーションの例としては、C言語で開発したシステムのように見ることができます。
- オペレーティングシステム
- コンパイラ
- アセンブラ
- テキストエディタ
- プリンタ
- ネットワークドライブ
- 現代の手続き
- データベース
- 言語インタプリタ
- エンティティツール
こんにちは、世界のコード解析
#include <stdio.h>
int main{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
- プログラムの最初の行 の#include <stdio.hの> であるstdio.hの(標準入出力ヘッダ)ヘッダを含むように実際のCコンパイラの前にコンパイラに伝えるコマンド・プリプロセッサ。あなたが見つからない場合は stdio.hの ヘッダファイルを、コンパイルエラーが発生します。
- すべてのC言語プログラムを含める必要があり 、メイン() main関数。コード ()メイン 関数が実行を開始します。int型は戻り値の型であります
- / * ... * / 注釈のために。
- printf() 画面への出力をフォーマットします。printf() 関数 「stdio.hの」 宣言ヘッダーファイル。
- 0を返す; 文は、プログラムを終了するために示すために使用され、その後、値型は、メインの前にそれ以外の場合はコンパイルエラーを型宣言と一致しなければなりませんになります。
コンパイル&Cプログラムの実行
- 上記のコードを書くためのテキストエディタ。
- ファイルの名前を付けて保存 のhello.c、Cのソースコードファイルは.Cです。
- 、コマンドプロンプトを開き、ファイルを保存するディレクトリを入力します。
- タイプ のgccのhello.cを、コードをコンパイルします。
- 生成 a.outを 、実行可能ファイルに入力 a.outの プログラムを実行します。
- 画面上のプリントアウトの「Hello World」。
シングルCソースファイルのコンパイル、実行コマンドの例:
gcc hello.c
./a.out
输出:Hello, World!
ソースファイルの複数のCファイル名を指定して実行例にコンパイルされています。
$ gcc test1.c test2.c -o main.out
$ ./main.out
Cトークン(トークン)
様々なトークンからなるCプログラムでは、トークンはキーワード、識別子、定数、文字列値、またはシンボルであってもよいです。
セミコロン
Cプログラムでは、セミコロンは文の終了です。つまり、それぞれの文はセミコロンで終了しなければなりません。これは、論理的なエンティティの終わりを示します。
注記
単一行コメント://
複数行コメント:/ * * /コメントこのフォーマットは、単一または複数の行することができます。
識別子
Cは、変数、関数、またはアイテムの他の任意のユーザ定義の名前を識別するための識別子です。文字、数字、およびアンダースコアによって識別され、唯一の文字とアンダースコアで始めることができます。Cは、大文字と小文字を区別プログラミング言語。
キーワード
これらの言葉は、定数と変数名または他の識別子名として保持することはできません。
キーワード | 説明 |
---|---|
オート | 自動変数宣言 |
ブレーク | 現在のサイクルのうち、 |
場合 | switchステートメントのブランチ |
CHAR | 宣言文字変数や関数の戻り値の型 |
CONST | 読み取り専用変数宣言 |
継続する | 現在のサイクルを終了し、次のサイクルが開始します |
デフォルト | switch文「その他」の分岐 |
行う | ループ循環声明 |
ダブル | 倍精度浮動小数点変数宣言または関数の戻り値型 |
そうしないと | 条件文の負の枝(と組み合わせて使用した場合) |
列挙型 | 列挙型を宣言します |
外部の | 変数や関数を宣言することは、この文書内の別のファイルまたは別の場所で定義されています |
浮く | 宣言されたフロート変数や関数の戻り値の型 |
にとって | 反復文 |
後藤 | 無条件ジャンプ声明 |
もし | 条件文 |
int型 | 変数や関数の整数宣言 |
長いです | ロングは、変数や関数の戻り値の型を宣言しました |
登録 | 宣言レジスタ変数 |
リターン | サブルーチンreturn文(パラメータを取る、または引数なしですることができます) |
ショート | 短い整数の変数や関数を宣言 |
署名 | ステートメント署名された型変数または関数 |
のサイズ | データ型または変数の長さを計算する(すなわち、バイト数占有しました) |
静的 | 静的変数を宣言 |
構造体 | 構造型の宣言 |
スイッチ | switchステートメント |
typedef | データ型のエイリアス |
符号無し | unsigned型の変数や関数を宣言 |
連合 | 組合型宣言 |
空隙 | 関数が宣言された戻り値またはパラメータなしの宣言型なしポインタを持っていません |
揮発性 | プログラム実行中の説明変数は、暗黙的に変更することができます |
同時に | サイクル条件のループ |
新しく追加されたキーワード
_Bool | _繁雑 | _Imaginary | 列をなして | restric |
_Alignas | _Alignof | _atomic | _Generic | _返品不可 |
_Static_assert | _Thread_local |
空間でのC
行がスペースだけが含まれている、と呼ばれ、空白行、完全にコンパイラによって無視されます
スペースで区切られた文の様々な部分は、したがって、コンパイラは、文を、それが終了する(intなど)の要素を識別することができます。スペースを追加するために、式の識別子、事業者などとの読みやすさを向上させるために、
Cデータ型
変数の型は変数の格納領域がどのように保存されたビットパターンを解釈する占有し、決定します。Cは、次のタイプに分けられます。
いいえ。 | 種類と説明 |
---|---|
1 | 基本タイプ: 算術タイプの2種類を含む:整数型と浮動小数点型。 |
2 | 列挙型: プログラムで定義された算術型は、離散変数のみを付与するために使用される特定の整数値です。 |
3 | void型: 型指定子 ボイドが 値が利用できないことを示しています。 |
4 | 派生类型: 它们包括:指针类型、数组类型、结构类型、共用体类型和函数类型。 |
数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值的类型。
整数类型和浮点类型
标准整数类型的存储大小和值范围的细节(32位和64位):
float,单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。
double,双精度浮点值。双精度是1位符号,11位指数,52位小数。
使用sizeof 运算符。表达式 sizeof(type) 得到对象或类型的存储字节大小。
示例:
#include <stdio.h>
#include <float.h>
#include <limits.h>
int main()
{ //%lu 为 32 位无符号整数
printf("int 存储大小 : %lu \n", sizeof(int));
printf("float 存储最大字节数 : %lu \n", sizeof(float));
//%E 为以指数形式输出单、双精度实数
printf("float 最小值: %E\n", FLT_MIN );
printf("float 最大值: %E\n", FLT_MAX );
printf("精度值: %d\n", FLT_DIG );
return 0;
}
void 类型
void 类型指定没有可用的值,表示类型的缺失。它通常用于以下三种情况下:
序号 | 类型与描述 |
---|---|
1 | 函数返回为空 C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status); |
2 | 函数参数为空 C 中有各种函数不接受任何参数。不带参数的函数可以接受一个 void。例如 int rand(void); |
3 | 指针指向 void 类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可以转换为任何数据类型。 |
类型转换
1、数据类型转换:C 语言中如果一个表达式中含有不同类型的常量和变量,在计算时,会将它们自动转换为同一种类型;在 C 语言中也可以对数据类型进行强制转换;
2、自动转换规则:
- a)浮点数赋给整型,该浮点数小数被舍去;
- b)整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中;
3、强制类型转换形式: (类型说明符)(表达式)
C变量和常量
变量其实只不过是程序可操作的存储区的名称。常量是指程序在运行时其值不能改变的量。常量不占内存,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中,又称作字面量。变量是指在程序运行时其值可以改变的量。变量的功能就是存储数据。标识符应做到‘顾名思义’。
变量定义
语法:
//仅定义
type variable_list;
//或定义并初始化(指定一个初始值)
type variable_name = value;
对于不带初始化值的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。
变量声明
变量的声明有两种情况:
- 1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
- 2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。
- 除非有extern关键字,否则都是变量的声明加定义。
若要一个源文件中引用另外一个源文件中定义的变量,我们只需在需要引用的文件中将变量加上 extern 关键字的声明。
整数常量用0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
浮点常量由整数部分、小数点、小数部分和指数部分组成。
字符常量是括在单引号中,例如,'x' 可以存储在 char 类型的简单变量中。
字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。使用空格做分隔符,把一个很长的字符串常量进行分行。下列字符串字面值是显示相同的:字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。使用空格做分隔符,把一个很长的字符串常量进行分行。下列字符串字面值是显示相同的
:
"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
常量的定义
C 中,有两种简单的定义常量的方式:
- 使用 #define 预处理器。 #define identifier value;
- 使用 const 关键字。: const type variable = value;
常量常常更应该定义为大写字母形式。