C++ -資料型態整理 (C++ datatype)
這裡整理出 C++ 重要的資料型態,還有他們所佔的 byte 數 與 上下限。
資料型態 | byte | 下限 | 上限 |
char | 1 | -128 | 127 |
unsigned char | 1 | 0 | 255 |
short | 2 | -32768 | 32767 |
unsigned short | 2 | 0 | 65535 |
int | 4 | -2147483648 | 2147483647 |
unsigned int | 4 | 0 | 4294967295 |
long | 4 | -2147483648 | 2147483647 |
unsigned long | 4 | 0 | 4294967295 |
long long | 8 | -9223372036854775808 | 9223372036854775807 |
unsigned long long | 8 | 0 | 18446744073709551615 |
float | 4 | ||
double | 8 | ||
long double | 8 |
有一些系統或編譯器所佔的 byte 數可能會不一樣,在換電腦或系統時用以下方式來確定一下會比較保險。
另外因為電腦處理小數會有誤差,所以其實不用太在意 float、double、long double 的上下限,上面的表格就沒有列出來了,不過下面的程式還是有寫出來。
不使用 C++ 的 cout,而是使用 C 的 printf 來印出,是我故意的。
char、short、int、long、long long
#include <iostream>
using namespace std;
int main()
{
printf("sizeof(char): %d\n", sizeof(char));
printf("Max of signed char: %d\n", CHAR_MAX);
printf("Min of signed char: %d\n", CHAR_MIN);
printf("Max of unsigned char: %u\n", UCHAR_MAX);
printf("\n");
printf("sizeof(short): %d\n", sizeof(short));
printf("Max of signed short: %d\n", SHRT_MAX);
printf("Min of signed short: %d\n", SHRT_MIN);
printf("Max of unsigned short: %u\n", USHRT_MAX);
printf("\n");
printf("sizeof(int): %d\n", sizeof(int));
printf("Max of signed int: %d\n", INT_MAX);
printf("Min of signed int: %d\n", INT_MIN);
printf("Max of unsigned int: %u\n", UINT_MAX);
printf("\n");
printf("sizeof(long): %d\n", sizeof(long));
printf("Max of signed long: %ld\n", LONG_MAX);
printf("Min of signed long: %ld\n", LONG_MIN);
printf("Max of unsigned long: %lu\n", ULONG_MAX);
printf("\n");
printf("sizeof(long long): %d\n", sizeof(long long));
printf("Max of signed long long: %lld\n", LLONG_MAX);
printf("Min of signed long long: %lld\n", LLONG_MIN);
printf("Max of unsigned long long: %llu\n", ULLONG_MAX);
printf("\n");
system("pause");
return 0;
}
執行結果
sizeof(char): 1 Max of signed char: 127 Min of signed char: -128 Max of unsigned char: 255 sizeof(short): 2 Max of signed short: 32767 Min of signed short: -32768 Max of unsigned short: 65535 sizeof(int): 4 Max of signed int: 2147483647 Min of signed int: -2147483648 Max of unsigned int: 4294967295 sizeof(long): 4 Max of signed long: 2147483647 Min of signed long: -2147483648 Max of unsigned long: 4294967295 sizeof(long long): 8 Max of signed long long: 9223372036854775807 Min of signed long long: -9223372036854775808 Max of unsigned long long: 18446744073709551615 |
float、double、long double
#include <iostream>
using namespace std;
int main()
{
printf("sizeof(float): %d\n", sizeof(float));
printf("Digit of float: %u\n", FLT_DIG);
printf("Max of float: %e\n", FLT_MAX);
printf("Min pos of float: %e\n", FLT_MIN);
printf("\n");
printf("sizeof(double): %d\n", sizeof(double));
printf("Digit of double: %u\n", DBL_DIG);
printf("Max of double: %e\n", DBL_MAX);
printf("Min pos of double: %e\n", DBL_MIN);
printf("\n");
printf("sizeof(long double): %d\n", sizeof(long double));
printf("Digit of long double: %u\n", LDBL_DIG);
printf("Max of long double: %e\n", LDBL_MAX);
printf("Min pos of long double: %e\n", LDBL_MIN);
printf("\n");
system("pause");
return 0;
}
執行結果
sizeof(float): 4 Digit of float: 6 Max of float: 3.402823e+38 Min pos of float: 1.175494e-38 sizeof(double): 8 Digit of double: 15 Max of double: 1.797693e+308 Min pos of double: 2.225074e-308 sizeof(long double): 8 Digit of long double: 15 Max of long double: 1.797693e+308 Min pos of long double: 2.225074e-308 |