Saturday, June 30, 2018

C - 定数とリテラル

定数は、プログラムが実行中に変更できない固定値を指します。 これらの固定値はリテラルとも呼ばれます。
定数は、整数定数、浮動小数点定数、文字定数、文字列リテラルなどの基本データ型のいずれかにすることができます。 列挙定数もあります。
定数は、定義後に値を変更できないという点を除いて、通常の変数と同様に扱われます。

整数リテラル
整数リテラルは、10進数、8進数、または16進定数です。 接頭辞は、16進数の場合は0xまたは0X、8進数の場合は0、小数の場合は0になります。
整数リテラルは、それぞれunsignedとlongに対して、UとLの組み合わせである接尾辞を持つこともできます。 接尾辞は大文字または小文字で、任意の順序で指定できます。
整数リテラルのいくつかの例を以下に示します。
212         /* Legal */
215u        /* Legal */
0xFeeL      /* Legal */
078         /* Illegal: 8 is not an octal digit */
032UU       /* Illegal: cannot repeat a suffix */

以下は、さまざまな種類の整数リテラルの他の例です。
85         /* decimal */
0213       /* octal */
0x4b       /* hexadecimal */
30         /* int */
30u        /* unsigned int */
30l        /* long */
30ul       /* unsigned long */

浮動小数点リテラル
浮動小数点リテラルは、整数部、小数点、小数部、および指数部を持ちます。 浮動小数点リテラルは小数点または指数形式で表すことができます。

小数点形式を表すときは、小数点、指数、またはその両方を含める必要があります。 指数関数形式を表す一方、整数部分、小数部分、またはその両方を含める必要があります。 符号付き指数は、eまたはEによって導入されます。

浮動小数点リテラルのいくつかの例を以下に示します。
3.14159       /* Legal */
314159E-5L    /* Legal */
510E          /* Illegal: incomplete exponent */
210f          /* Illegal: no decimal or exponent */
.e55          /* Illegal: missing integer or fraction */

文字定数
文字リテラルは一重引用符で囲みます。たとえば、 'x'はchar型の単純変数に格納できます。
文字リテラルは、プレーン文字( 'x'など)、エスケープシーケンス( '\ t'など)、ユニバーサル文字( '\ u02C0'など)です。
Cには、改行(\ n)やタブ(\ t)のようにバックスラッシュを前に付けると特別な意味を持つ文字があります。
以下は、いくつかのエスケープシーケンス文字を示す例です。
#include <stdio.h>

int main() {
   printf("Hello\tWorld\n\n");

   return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます。
Hello World

文字列リテラル
文字列リテラルまたは定数は二重引用符 ""で囲まれています。 文字列には、文字リテラルに似た文字(プレーン文字、エスケープシーケンス、ユニバーサル文字)が含まれています。
文字列リテラルを使用して長い行を複数の行に分割し、それらを空白で区切ることができます。
文字列リテラルの例をいくつか示します。 3つの形式はすべて同じ文字列です。

"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"

定数の定義
Cには定数を定義するための2つの簡単な方法があります -

  • #defineプリプロセッサを使用します。
  • constキーワードを使用しています。

#defineプリプロセッサ
以下は、#defineプリプロセッサを使用して定数を定義する形式です。
#define identifier value

次の例では詳細を説明します。
#include <stdio.h>

#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '\n'

int main() {
   int area;  
  
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます。
value of area : 50

constキーワード
const prefixを使用して、次のような特定の型の定数を宣言することができます。
const type variable = value;
次の例では詳細を説明します。
#include <stdio.h>

int main() {
   const int  LENGTH = 10;
   const int  WIDTH = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます。

value of area : 50


C - 変数

変数は、プログラムが操作できる記憶領域に与えられた名前だけです。 Cの各変数には、変数のメモリのサイズとレイアウトを決定する特定の型があります。 そのメモリ内に格納できる値の範囲。 変数に適用できる一連の操作を示します。

変数の名前は、文字、数字、およびアンダースコア文字で構成できます。 それは、文字またはアンダースコアのいずれかで始まる必要があります。 Cでは大文字と小文字が区別されるため、大文字と小文字は区別されます。 前の章で説明した基本タイプに基づいて、次の基本的な変数タイプがあります。

Sr.No.Type & Description
1
char
Typically a single octet(one byte). This is an integer type.
2
int
The most natural size of integer for the machine.
3
float
A single-precision floating point value.
4
double
A double-precision floating point value.
5
void
Represents the absence of type.
Cプログラミング言語では、列挙型、ポインタ型、配列型、構造体、連合型などのさまざまな種類の変数を定義することもできます。この章では、基本変数型のみを学習しましょう。

Cの変数定義
変数定義は、変数の作成場所と量をコンパイラに指示します。 変数定義はデータ型を指定し、その型の1つ以上の変数のリストを以下のように含んでいます -

type variable_list;

ここで、type は、char、w_char、int、float、double、bool、または任意のユーザ定義オブジェクトを含む有効なCデータ型でなければなりません。 variable_listは、コンマで区切られた1つ以上の識別子名で構成されます。 いくつかの有効な宣言がここに示されています -
int    i, j, k;
char   c, ch;
float  f, salary;
double d;

線int i、j、k; 変数i、j、kを宣言して定義します。 コンパイラにint型のi、j、およびkという名前の変数を作成するよう指示します。

変数は宣言で初期化(初期値に割り当てられます)できます。 イニシャライザは等号とそれに続く定数式で構成されます。

type variable_name = value;

いくつかの例は -
extern int d = 3, f = 5;    // declaration of d and f. 
int d = 3, f = 5;           // definition and initializing d and f. 
byte z = 22;                // definition and initializes z. 
char x = 'x';               // the variable x has the value 'x'.

イニシャライザのない定義の場合:静的な記憶期間を持つ変数は暗黙的にNULLで初期化されます(すべてのバイトは値0を持ちます)。他のすべての変数の初期値は未定義です。

Cでの変数宣言
変数宣言は、与えられた型と名前を持つ変数が存在するということをコンパイラに保証します。そのため、コンパイラは変数に関する完全な詳細を要求せずにさらにコンパイルを進めることができます。変数定義はコンパイル時に意味を持ち、コンパイラはプログラムをリンクするときに実際の変数定義を必要とします。

変数宣言は、複数のファイルを使用していて、プログラムのリンク時に使用できるファイルの1つに変数を定義するときに便利です。キーワードexternを使用して、任意の場所で変数を宣言します。 Cプログラムで変数を複数回宣言することはできますが、ファイル、関数、コードブロックでは1回しか定義できません。


次の例を試してください。ここでは、変数は先頭に宣言されていますが、main関数内で定義され、初期化されています。

#include <stdio.h>

// Variable declaration:
extern int a, b;
extern int c;
extern float f;

int main () {

   /* variable definition: */
   int a, b;
   int c;
   float f;
 
   /* actual initialization */
   a = 10;
   b = 20;
  
   c = a + b;
   printf("value of c : %d \n", c);

   f = 70.0/3.0;
   printf("value of f : %f \n", f);
 
   return 0;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます。
value of c : 30
value of f : 23.333334

同じ概念が関数宣言に適用され、宣言時に関数名を指定し、その実際の定義を他の場所に与えることができます。 例えば -
// function declaration
int func();

int main() {

   // function call
   int i = func();
}

// function definition
int func() {
   return 0;
}
Cの Lvalues と Rvalues
C言語には2種類の表現があります。

lvalue - メモリ位置を参照する式は、「左辺」式と呼ばれます。 左辺値は、割り当ての左辺または右辺のいずれかとして表示されます。

rvalue - rvalueという用語は、メモリ内のあるアドレスに格納されているデータ値を指します。 右辺値は値が割り当てられない式です。つまり、左辺には右辺が表示され、左辺には右辺が表示されません。

変数は左辺値なので、代入の左側に表示されることがあります。 数値リテラルは右辺値なので、左辺には表示されません。 次の有効な文と無効な文を見てください。

int g = 20; // valid statement

10 = 20; // invalid statement; would generate compile-time error





C - データ型

cのデータ型は、さまざまな型の変数または関数を宣言するために使用される広範なシステムを指します。 変数のタイプによって、ストレージ内でどれくらいのスペースが占有されるか、格納されるビットパターンがどのように解釈されるかが決まります。

Cの型は次のように分類できます。

No.Types & Description
1
Basic Types
They are arithmetic types and are further classified into: (a) integer types and (b) floating-point types.
2
Enumerated types
They are again arithmetic types and they are used to define variables that can only assign certain discrete integer values throughout the program.
3
The type void
The type specifier void indicates that no value is available.
4
Derived types
They include (a) Pointer types, (b) Array types, (c) Structure types, (d) Union types and (e) Function types.
配列タイプと構造タイプは集合的に集約タイプと呼ばれます。 関数の型は、関数の戻り値の型を指定します。 次のセクションでは基本タイプを、次の章ではその他のタイプについても説明します。

整数型
次の表は、標準的な整数型の詳細とその格納サイズと値の範囲を示しています。

TypeStorage sizeValue range
char1 byte-128 to 127 or 0 to 255
unsigned char1 byte0 to 255
signed char1 byte-128 to 127
int2 or 4 bytes-32,768 to 32,767 or -2,147,483,648 to 2,147,483,647
unsigned int2 or 4 bytes0 to 65,535 or 0 to 4,294,967,295
short2 bytes-32,768 to 32,767
unsigned short2 bytes0 to 65,535
long4 bytes-2,147,483,648 to 2,147,483,647
unsigned long4 bytes0 to 4,294,967,295
特定のプラットフォーム上の型または変数の正確なサイズを取得するには、sizeof演算子を使用します。 式sizeof(type)は、オブジェクトまたはタイプの記憶域サイズをバイト数で返します。 以下に、どのマシンでもint型のサイズを取得する例を示します。
#include <stdio.h>
#include <limits.h>

int main() {
   printf("Storage size for int : %d \n", sizeof(int));
   
   return 0;
}
上記のプログラムをコンパイルして実行すると、Linux上で以下の結果が得られます。

Storage size for int : 4

浮動小数点型
次の表は、標準的な浮動小数点型の詳細を示しています。これらの型は、

TypeStorage sizeValue rangePrecision
float4 byte1.2E-38 to 3.4E+386 decimal places
double8 byte2.3E-308 to 1.7E+30815 decimal places
long double10 byte3.4E-4932 to 1.1E+493219 decimal places
float.hヘッダーファイルでは、これらの値と、プログラム内の実数のバイナリ表現に関するその他の詳細を使用できるマクロを定義しています。 次の例では、float型とその範囲の値で指定された記憶領域を表示します。
#include <stdio.h>
#include <float.h>

int main() {
   printf("Storage size for float : %d \n", sizeof(float));
   printf("Minimum float positive value: %E\n", FLT_MIN );
   printf("Maximum float positive value: %E\n", FLT_MAX );
   printf("Precision value: %d\n", FLT_DIG );
   
   return 0;
}
上記のプログラムをコンパイルして実行すると、Linux上で以下の結果が得られます。
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6

空のタイプ
void型は、使用可能な値がないことを指定します。 それは3種類の状況で使用されます -



C - 基本構文

Cプログラムの基本構造を見てきたので、Cプログラミング言語の他の基本的なビルディングブロックを理解するのは簡単です。

Cのトークン
Cプログラムはさまざまなトークンで構成され、トークンはキーワード、識別子、定数、文字列リテラル、またはシンボルのいずれかです。 たとえば、次のCステートメントは5つのトークンで構成されています。
printf("Hello, World! \n");
個々のトークンは -
printf
(
"Hello, World! \n"
)
;
セミコロン
Cプログラムでは、セミコロンはステートメント終了記号です。 つまり、個々のステートメントはセミコロンで終わらなければなりません。 1つの論理エンティティーの終わりを示します。

以下に2つの異なるステートメントがあります -
printf("Hello, World! \n");
return 0;
コメント
コメントは、Cプログラムのテキストを助けるようなもので、コンパイラによって無視されます。 / *で始まり、以下に示すように* /で終わる -
/* my first program in C */

コメント内にコメントを入れることはできません。コメントは文字列や文字リテラル内では発生しません。

識別子
C識別子は、変数、関数、または他のユーザ定義アイテムを識別するために使用される名前です。 識別子は、文字A〜Z、a〜z、またはアンダースコア '_'で始まり、0以上の文字、アンダースコア、および数字(0〜9)で始まります。

Cでは、@、$、%などの区切り文字は識別子内で使用できません。 Cは大文字と小文字を区別するプログラミング言語です。 したがって、人材と人材はCの2つの異なる識別子です。ここでは、受け入れ可能な識別子の例をいくつか示します。
mohd       zara    abc   move_name  a_123
myname50   _temp   j     a23b9      retVal

キーワード
次のリストは、Cの予約語を示しています。これらの予約語は、定数や変数、その他の識別子名として使用できません。
autoelselongswitch
breakenumregistertypedef
caseexternreturnunion
charfloatshortunsigned
constforsignedvoid
continuegotosizeofvolatile
defaultifstaticwhile
dointstruct_Packed
double
Cの空白
空白のみを含む行(おそらくコメント付き)は空白行と呼ばれ、Cコンパイラはそれを完全に無視します。

空白は空白、タブ、改行文字およびコメントを記述するためにCで使用される用語です。 空白は、ステートメントの一部を別のステートメントから分離し、ステートメント内の1つの要素(intなど)がどこで終了し、次の要素が始まるかをコンパイラーが識別できるようにします。 したがって、次のステートメントでは、
int age;
コンパイラがそれらを区別できるように、intとageの間に少なくとも1つの空白文字(通常はスペース)が必要です。 一方、次の声明では、
fruit = apples + oranges;   // get the total fruit
果物と果物の間、または果物と果物との間に空白文字は必要ありませんが、読みやすさを向上させたい場合は自由に使用することができます。







C - プログラム構造

Cプログラミング言語の基本的なビルディングブロックを調べる前に、今後の章で参照できるように、最小のCプログラム構造を見てみましょう。

Hello Worldの例

Cプログラムは、基本的に次の部分から構成されています。
  • プリプロセッサコマンド
  • 機能
  • 変数
  • ステートメントと表現
  • コメント

「Hello World」という言葉を印刷する簡単なコードを見てみましょう。
#include <stdio.h>

int main() {
   /* my first program in C */
   printf("Hello, World! \n");
   
   return 0;
}

上記のプログラムのさまざまな部分を見てみましょう -

  • プログラムの最初の行 #include <stdio.h> はプリプロセッサコマンドで、実際のコンパイルに進む前に stdio.h ファイルをインクルードするようにCコンパイラに指示します。


  • 次の行 int main()は、プログラムの実行が開始される主な機能です。


  • 次の行/*...*/はコンパイラによって無視され、プログラムにコメントを追加します。 そのような行は、プログラム内のコメントと呼ばれます。


  • 次の行 printf(...)はCで使用可能な別の関数で、 "Hello、World!"というメッセージが表示されます。 画面に表示されます。


  • 次の行は0を返します。 main()関数を終了し、値0を返します。


Cプログラムのコンパイルと実行
ソースコードをファイルに保存する方法と、コンパイルして実行する方法を見てみましょう。 以下は簡単なステップです -

  • テキストエディタを開き、上記のコードを追加します。
  • ファイルをhello.cとして保存します。
  • コマンドプロンプトを開き、ファイルを保存したディレクトリに移動します。
  • gcc hello.cと入力し、Enterキーを押してコードをコンパイルします。
  • コードにエラーがない場合、コマンドプロンプトは次の行に移動し、a.out実行可能ファイルを生成します。
  • ここで、a.outと入力してプログラムを実行します。
  • 画面に "Hello World"という出力が表示されます。


$ gcc hello.c
$ ./a.out
Hello, World!

C - 環境設定

ローカル環境設定

Cプログラミング言語用の環境を設定する場合は、(a)テキストエディタと(b)Cコンパイラの2つのソフトウェアツールが必要です。

テキストエディタ

これはプログラムの入力に使用されます。 Windowsのメモ帳、OS編集コマンド、Brief、Epsilon、EMACS、vimまたはviなど、ほとんどのエディタの例はありません。

テキストエディタの名前とバージョンは、オペレーティングシステムによって異なる場合があります。 たとえば、メモ帳はWindowsで使用され、vimまたはviはWindowsまたはLinuxまたはUNIXで使用できます。

エディタで作成したファイルはソースファイルと呼ばれ、プログラムのソースコードが含まれています。 Cプログラムのソースファイルには、通常、拡張子 ".c"が付いています。

プログラミングを始める前に、テキストエディタが1つあり、コンピュータプログラムを作成してファイルに保存し、コンパイルして最後に実行するのに十分な経験があることを確認してください。


Cコンパイラ

ソースファイルで書かれたソースコードは、プログラムの人間が読めるソースです。 あなたのCPUが与えられた指示に従って実際にプログラムを実行できるように、それを機械語に「コンパイル」する必要があります。

コンパイラはソースコードを最終実行可能プログラムにコンパイルします。 最も頻繁に使用され、無料で利用可能なコンパイラは、GNU C / C ++コンパイラです。そうでない場合は、それぞれのオペレーティングシステムを持っている場合、HPまたはSolarisからコンパイラを持つことができます。

次のセクションでは、さまざまなOSにGNU C / C ++コンパイラをインストールする方法について説明します。 GNU gccコンパイラはCとC ++の両方のプログラミング言語で動作するため、C / C ++についても言及しています。

UNIX / Linuxへのインストール
LinuxまたはUNIXを使用している場合は、コマンドラインから次のコマンドを入力して、GCCがシステムにインストールされているかどうかを確認します。

$ gcc -v

あなたのマシンにGNUコンパイラがインストールされているなら、次のようにメッセージを出力するはずです -

Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr .......
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

GCCがインストールされていない場合は、https://gcc.gnu.org/install/にある詳しい手順を使用してインストールする必要があります。

このチュートリアルはLinuxに基づいて書かれており、すべての例はLinuxシステムのCentOS風味でコンパイルされています。


Mac OSでのインストール
Mac OS Xを使用している場合、GCCを入手する最も簡単な方法は、AppleのWebサイトからXcode開発環境をダウンロードし、簡単なインストール手順に従うことです。 Xcodeをセットアップすると、C / C ++用のGNUコンパイラを使用することができます。

Xcodeは現在、developer.apple.com/technologies/tools/から入手できます。


Windowsへのインストール
WindowsにGCCをインストールするには、MinGWをインストールする必要があります。 MinGWをインストールするには、MinGWのホームページwww.mingw.orgにアクセスし、MinGWのダウンロードページへのリンクに従ってください。 MinGW- <version> .exeという名前のMinGWインストールプログラムの最新バージョンをダウンロードします。

Min GWをインストールするには、少なくともgcc-core、gcc-g ++、binutils、およびMinGWランタイムをインストールする必要がありますが、さらにインストールする必要があります。

MinGWインストールのbinサブディレクトリをPATH環境変数に追加して、これらのツールを単純な名前でコマンドラインに指定することができます。

インストールが完了すると、gcc、g ++、ar、ranlib、dlltool、およびその他のいくつかのGNUツールをWindowsのコマンドラインから実行できます。

C言語 - 概要

CはBell LabsでUNIXオペレーティングシステムを開発するためにDennis M. Ritchieによって開発された汎用の高水準言語です。 Cはもともと1972年にDEC PDP-11コンピュータで最初に実装されました。

1978年、Brian KernighanとDennis Ritchieは、現在K&R標準として知られているCの最初の公表された説明を作成しました。

UNIXオペレーティングシステム、Cコンパイラ、そして本質的にすべてのUNIXアプリケーションプログラムはC言語で書かれています.Cは現在、さまざまな理由で広く使われているプロフェッショナル言語になっています。

簡単に学べる
構造化言語
それは効率的なプログラムを作り出す
低レベルのアクティビティーを処理できます
さまざまなコンピュータプラットフォームでコンパイルできます


Cについての事実

CはUNIXと呼ばれるオペレーティングシステムを書くために考案されました。
C言語は、1970年代初頭に導入されたB言語の後継言語です。
言語は1988年にアメリカ標準協会(ANSI)によって公式化されました。
UNIX OSはC言語で完全に書かれています。
現在、Cは最も広く使われているシステムプログラミング言語です。
最先端のソフトウェアのほとんどは、C言語を使用して実装されています。
今日最も人気のあるLinux OSとRDBMS MySQLは、Cで書かれています。


なぜCを使うのですか?

Cは、最初はシステム開発作業、特にオペレーティングシステムを構成するプログラムに使用されていました。 Cはアセンブリ言語で記述されたコードとほぼ同じ速度で実行されるコードを生成するため、システム開発言語として採用されました。 Cの使用のいくつかの例は、


  • オペレーティングシステム
  • 言語コンパイラ
  • アセンブラ
  • テキストエディタ
  • 印刷スプーラ
  • ネットワークドライバ
  • 現代プログラム
  • データベース
  • 言語インタープリタ
  • ユーティリティー


Cプログラム

Cプログラムは、3行から数百万行までの範囲で変更することができ、拡張子 ".c"を持つ1つ以上のテキストファイルに書き込む必要があります。 例えば、hello.cです。 "vi"、 "vim"などのテキストエディタを使用して、Cプログラムをファイルに書き込むことができます。

このチュートリアルでは、テキストファイルを編集する方法と、プログラムファイル内にソースコードを書き込む方法を理解していることを前提としています。

Interfaces and their protocol stacks

インタフェースとそのプロトコルスタック 主要なネットワーク要素に精通した後、これら要素間のインタフェースをよりよく知る時期が来ています。 インタフェースは、MME、SGWおよびPGWが他のネットワーク要素(例えば、HSSまたはPCRF)と協働することを可能にする。 それらの...