数値データ型は、C言語で数値を扱うための基本的なデータ型です。数値データ型を理解することで、適切なメモリ管理や効率的な計算を行うことができます。ここでは、C言語の数値データ型について詳しく説明します。
1.整数型(Integer Types)
整数型は、小数部分のない数値を表現します。C言語にはいくつかの種類の整数型があり、それぞれが異なる範囲の数値を表現できます。
1.1.基本的な整数型
int
: 標準の整数型short
: 短い整数型long
: 長い整数型long long
: 非常に長い整数型
#include <stdio.h> int main() { int a = 100; short b = 10; long c = 100000; long long d = 10000000000; printf("int: %d\n", a); printf("short: %d\n", b); printf("long: %ld\n", c); printf("long long: %lld\n", d); return 0; }
1.2.符号付き整数型と符号なし整数型
整数型は、符号付きと符号なしの2種類があります。符号付き整数型は負の値を含むことができますが、符号なし整数型は非負の値のみを表現します。
#include <stdio.h> int main() { signed int a = -100; unsigned int b = 100; signed short c = -10; unsigned short d = 10; signed long e = -100000; unsigned long f = 100000; signed long long g = -10000000000; unsigned long long h = 10000000000; printf("signed int: %d\n", a); printf("unsigned int: %u\n", b); printf("signed short: %d\n", c); printf("unsigned short: %u\n", d); printf("signed long: %ld\n", e); printf("unsigned long: %lu\n", f); printf("signed long long: %lld\n", g); printf("unsigned long long: %llu\n", h); return 0; }
2.浮動小数点型(Floating-Point Types)
浮動小数点型は、小数部分を持つ数値を表現するために使用されます。C言語には、異なる精度を持つ3種類の浮動小数点型があります。
2.1.基本的な浮動小数点型
float
: 単精度浮動小数点型double
: 倍精度浮動小数点型long double
: 拡張倍精度浮動小数点型
#include <stdio.h> int main() { float a = 3.14f; double b = 3.141592653589793; long double c = 3.141592653589793238462643383279502884L; printf("float: %f\n", a); printf("double: %lf\n", b); printf("long double: %Lf\n", c); return 0; }
2.2.浮動小数点数の精度
浮動小数点型の精度は、型ごとに異なります。float
は約7桁の有効数字を、double
は約15桁の有効数字を、long double
はさらに多くの有効数字を表現できます。
#include <stdio.h> int main() { float a = 1234567.0f; double b = 123456789012345.0; long double c = 123456789012345678901234567890.0L; printf("float: %.7g\n", a); // 7桁の有効数字 printf("double: %.15g\n", b); // 15桁の有効数字 printf("long double: %.20Lg\n", c); // 20桁の有効数字 return 0; }
3.数値データ型の操作
数値データ型は、様々な算術演算や比較演算に使用できます。これには、加算、減算、乗算、除算、剰余演算、および比較演算が含まれます。
3.1.算術演算
基本的な算術演算には、加算(+
)、減算(-
)、乗算(*
)、除算(/
)、および剰余(%
)が含まれます。
#include <stdio.h> int main() { int a = 10, b = 3; float x = 10.0f, y = 3.0f; // 整数の算術演算 printf("加算: %d + %d = %d\n", a, b, a + b); printf("減算: %d - %d = %d\n", a, b, a - b); printf("乗算: %d * %d = %d\n", a, b, a * b); printf("除算: %d / %d = %d\n", a, b, a / b); printf("剰余: %d %% %d = %d\n", a, b, a % b); // 浮動小数点数の算術演算 printf("加算: %f + %f = %f\n", x, y, x + y); printf("減算: %f - %f = %f\n", x, y, x - y); printf("乗算: %f * %f = %f\n", x, y, x * y); printf("除算: %f / %f = %f\n", x, y, x / y); return 0; }
3.2.比較演算
比較演算には、等しい(==
)、等しくない(!=
)、大きい(>
)、小さい(<
)、大きいまたは等しい(>=
)、および小さいまたは等しい(<=
)が含まれます。
#include <stdio.h> int main() { int a = 10, b = 3; // 整数の比較演算 printf("等しい: %d == %d は %d\n", a, b, a == b); printf("等しくない: %d != %d は %d\n", a, b, a != b); printf("大きい: %d > %d は %d\n", a, b, a > b); printf("小さい: %d < %d は %d\n", a, b, a < b); printf("大きいまたは等しい: %d >= %d は %d\n", a, b, a >= b); printf("小さいまたは等しい: %d <= %d は %d\n", a, b, a <= b); return 0; }
4.総合例
以下に、これまでに学んだ数値データ型の知識を統合したプログラムを示します。このプログラムは、様々な整数型と浮動小数点型を使用し、基本的な算術演算と比較演算を行います。
#include <stdio.h> int main() { // 整数型 int intNum = 42; unsigned int uIntNum = 42; short shortNum = 42; long longNum = 42L; long long longLongNum = 42LL; // 浮動小数点型 float floatNum = 3.14f; double doubleNum = 3.141592653589793; long double longDoubleNum = 3.141592653589793238462643383279502884L; // 数値の出力 printf("int: %d\n", intNum); printf("unsigned int: %u\n", uIntNum); printf("short: %d\n", shortNum); printf("long: %ld\n", longNum); printf("long long: %lld\n", longLongNum); printf("float: %f\n", floatNum); printf("double: %lf\n", doubleNum); printf("long double: %Lf\n", longDoubleNum); // 算術演算 int a = 10, b = 3; printf("加算: %d + %d = %d\n", a, b, a + b); printf("減算: %d - %d = %d\n", a, b, a - b); printf("乗算: %d * %d = %d\n", a, b, a * b); printf("除算: %d / %d = %d\n", a, b, a / b); printf("剰余: %d %% %d = %d\n", a, b, a % b); // 比較演算 printf("等しい: %d == %d は %d\n", a, b, a == b); printf("等しくない: %d != %d は %d\n", a, b, a != b); printf("大きい: %d > %d は %d\n", a, b, a > b); printf("小さい: %d < %d は %d\n", a, b, a < b); printf("大きいまたは等しい: %d >= %d は %d\n", a, b, a >= b); printf("小さいまたは等しい: %d <= %d は %d\n", a, b, a <= b); return 0; }
5.結論
ここでは、C言語の数値データ型について説明しました。整数型と浮動小数点型の違いや、それぞれの使用方法について学びました。これらの知識を活用することで、効率的かつ効果的な数値操作が可能になります。