Cprogramming-c-data-types
C-データ型
cのデータ型は、異なる型の変数または関数を宣言するために使用される広範なシステムを指します。 変数のタイプによって、ストレージ内で占めるスペースの量と、格納されているビットパターンの解釈方法が決まります。
Cの型は次のように分類することができます-
Sr.No. | Types & Description |
---|---|
1 |
Basic Types これらは算術型であり、さらに(a)整数型と(b)浮動小数点型に分類されます。 |
2 |
Enumerated types これらも算術型であり、プログラム全体で特定の離散整数値のみを割り当てることができる変数を定義するために使用されます。 |
3 |
The type void 型指定子_void_は、使用可能な値がないことを示します。 |
4 |
Derived types それらには、(a)ポインター型、(b)配列型、(c)構造体型、(d)ユニオン型、および(e)関数型が含まれます。 |
配列型と構造体型は、集合型と総称されます。 関数のタイプは、関数の戻り値のタイプを指定します。 次のセクションで基本タイプを確認します。他のタイプについては、今後の章で説明します。
整数型
次の表は、標準の整数型とそのストレージサイズと値の範囲の詳細を示しています-
Type | Storage size | Value range |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 2 or 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 8 bytes | -9223372036854775808 to 9223372036854775807 |
unsigned long | 8 bytes | 0 to 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
浮動小数点型
次の表は、ストレージのサイズと値の範囲、およびその精度を備えた標準の浮動小数点型の詳細を示しています-
Type | Storage size | Value range | Precision |
---|---|---|---|
float | 4 byte | 1.2E-38 to 3.4E+38 | 6 decimal places |
double | 8 byte | 2.3E-308 to 1.7E+308 | 15 decimal places |
long double | 10 byte | 3.4E-4932 to 1.1E+4932 | 19 decimal places |
ヘッダーファイルfloat.hは、これらの値およびプログラムで実数のバイナリ表現に関するその他の詳細を使用できるマクロを定義します。 次の例は、フロート型とその範囲値によって取得されたストレージスペースを印刷します-
#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. | Types & Description |
---|---|
1 |
Cには値を返さないさまざまな関数がありますが、これらの関数はvoidを返します。 戻り値のない関数の戻り値の型はvoidです。 たとえば、 void exit(int status); |
2 |
Function arguments as void Cには、パラメーターを受け入れないさまざまな関数があります。 パラメータを持たない関数はvoidを受け入れることができます。 たとえば、 int rand(void); |
3 |
Pointers to void void 型のポインターはオブジェクトのアドレスを表しますが、その型は表しません。 たとえば、メモリ割り当て関数 *void malloc(size_t size); *は、任意のデータ型にキャストできるvoidへのポインタを返します。 |