C - データ型
c のデータ型は、さまざまな型の変数または関数を宣言するために使用される広範なシステムを指します。変数の型によって、変数がストレージ内で占有するスペースの量と、格納されたビット パターンの解釈方法が決まります。
C の型は次のように分類できます −
Sr.No. | タイプと説明 |
---|---|
1 | 基本タイプ これらは算術型であり、(a) 整数型と (b) 浮動小数点型にさらに分類されます。 |
2 | 列挙型 これらは再び算術型であり、プログラム全体で特定の離散整数値のみを割り当てることができる変数を定義するために使用されます。 |
3 | 型 void 型指定子 void 利用可能な値がないことを示します。 |
4 | 派生型 それらには、(a) ポインター型、(b) 配列型、(c) 構造体型、(d) 共用体型、および (e) 関数型が含まれます。 |
配列型と構造体型をまとめて集合型と呼びます。関数の型は、関数の戻り値の型を指定します。次のセクションでは基本的な型について説明しますが、他の型については次の章で説明します。
整数型
次の表は、標準の整数型とそのストレージ サイズおよび値の範囲の詳細を示しています −
タイプ | ストレージ サイズ | 値の範囲 |
---|---|---|
文字 | 1 バイト | -128 ~ 127 または 0 ~ 255 |
符号なし文字 | 1 バイト | 0 ~ 255 |
署名付き文字 | 1 バイト | -128 ~ 127 |
int | 2 または 4 バイト | -32,768 から 32,767 または -2,147,483,648 から 2,147,483,647 |
符号なし int | 2 または 4 バイト | 0 ~ 65,535 または 0 ~ 4,294,967,295 |
短い | 2 バイト | -32,768 ~ 32,767 |
unsigned short | 2 バイト | 0 ~ 65,535 |
長い | 8 バイトまたは (32 ビット OS の場合は 4 バイト) | -9223372036854775808 から 9223372036854775807 |
unsigned long | 8 バイト | 0 ~ 18446744073709551615 |
特定のプラットフォームで型または変数の正確なサイズを取得するには、sizeof オペレーター。式 sizeof(type) オブジェクトまたは型のストレージ サイズをバイト単位で返します。以下に、limits.h ヘッダー ファイルで定義されたさまざまな定数を使用して、マシン上のさまざまな型のサイズを取得する例を示します −
ライブデモ#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("CHAR_BIT : %d\n", CHAR_BIT); printf("CHAR_MAX : %d\n", CHAR_MAX); printf("CHAR_MIN : %d\n", CHAR_MIN); printf("INT_MAX : %d\n", INT_MAX); printf("INT_MIN : %d\n", INT_MIN); printf("LONG_MAX : %ld\n", (long) LONG_MAX); printf("LONG_MIN : %ld\n", (long) LONG_MIN); printf("SCHAR_MAX : %d\n", SCHAR_MAX); printf("SCHAR_MIN : %d\n", SCHAR_MIN); printf("SHRT_MAX : %d\n", SHRT_MAX); printf("SHRT_MIN : %d\n", SHRT_MIN); printf("UCHAR_MAX : %d\n", UCHAR_MAX); printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX); printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX); printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX); return 0; }
上記のプログラムをコンパイルして実行すると、Linux で次の結果が生成されます −
CHAR_BIT : 8 CHAR_MAX : 127 CHAR_MIN : -128 INT_MAX : 2147483647 INT_MIN : -2147483648 LONG_MAX : 9223372036854775807 LONG_MIN : -9223372036854775808 SCHAR_MAX : 127 SCHAR_MIN : -128 SHRT_MAX : 32767 SHRT_MIN : -32768 UCHAR_MAX : 255 UINT_MAX : 4294967295 ULONG_MAX : 18446744073709551615 USHRT_MAX : 65535
浮動小数点型
次の表は、標準の浮動小数点型の詳細とストレージ サイズ、値の範囲、およびそれらの精度を示しています −
タイプ | ストレージ サイズ | 値の範囲 | 精度 |
---|---|---|---|
フロート | 4 バイト | 1.2E-38 から 3.4E+38 | 小数点以下6桁 |
ダブル | 8 バイト | 2.3E-308 から 1.7E+308 | 小数点以下15桁 |
ロングダブル | 10 バイト | 3.4E-4932 から 1.1E+4932 | 小数点以下19桁 |
ヘッダー ファイル float.h は、プログラムでこれらの値や実数のバイナリ表現に関するその他の詳細を使用できるようにするマクロを定義します。次の例は、float 型とその範囲値が占める記憶域を出力します −
ライブデモ#include <stdio.h> #include <stdlib.h> #include <limits.h> #include <float.h> int main(int argc, char** argv) { printf("Storage size for float : %d \n", sizeof(float)); printf("FLT_MAX : %g\n", (float) FLT_MAX); printf("FLT_MIN : %g\n", (float) FLT_MIN); printf("-FLT_MAX : %g\n", (float) -FLT_MAX); printf("-FLT_MIN : %g\n", (float) -FLT_MIN); printf("DBL_MAX : %g\n", (double) DBL_MAX); printf("DBL_MIN : %g\n", (double) DBL_MIN); printf("-DBL_MAX : %g\n", (double) -DBL_MAX); printf("Precision value: %d\n", FLT_DIG ); return 0; }
上記のプログラムをコンパイルして実行すると、Linux で次の結果が生成されます −
Storage size for float : 4 FLT_MAX : 3.40282e+38 FLT_MIN : 1.17549e-38 -FLT_MAX : -3.40282e+38 -FLT_MIN : -1.17549e-38 DBL_MAX : 1.79769e+308 DBL_MIN : 2.22507e-308 -DBL_MAX : -1.79769e+308 Precision value: 6
ボイド タイプ
void 型は、使用可能な値がないことを指定します。 3種類の状況で使用されます −
Sr.No. | タイプと説明 |
---|---|
1 | 関数は void を返します Cには、値を返さない、またはvoidを返すと言えるさまざまな関数があります。戻り値のない関数の戻り値の型は void です。例:無効な終了 (int ステータス); |
2 | void としての関数の引数 Cには、パラメーターを受け入れないさまざまな関数があります。パラメータのない関数は、void を受け入れることができます。例:int rand(void); |
3 | 無効へのポインタ 型 void * のポインターは、オブジェクトのアドレスを表しますが、その型は表しません。たとえば、メモリ割り当て関数 void *malloc( size_t size ); 任意のデータ型にキャストできる void へのポインターを返します。 |
C言語