C++ -資料型態整理

C++ -資料型態整理 (C++ datatype)

這裡整理出 C++ 重要的資料型態,還有他們所佔的 byte 數 與 上下限。

資料型態byte下限上限
char1-128127
unsigned char10255
short2-3276832767
unsigned short2065535
int4-21474836482147483647
unsigned int404294967295
long4-21474836482147483647
unsigned long404294967295
long long8-92233720368547758089223372036854775807
unsigned long long8018446744073709551615
float4
double8
long double8

有一些系統或編譯器所佔的 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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *