学点C言語(15):データ型-sizeof(検出型サイズ)

2425 ワード

タイプサイズを取得する変数はintタイプではなくsize_が望ましいtタイプ;
size_tはstdio.h、stddef.hには定義がある.
1.既知のタイプのサイズを取得するには:


#include <stdio.h>

#include <stddef.h>



int main(void)

{

    char n = 2;

    size_t size;



    size = sizeof(char);

    printf("%*u: char
", n,size); size = sizeof(unsigned char); printf("%*u: unsigned char
", n,size); size = sizeof(short); printf("%*u: short
", n,size); size = sizeof(unsigned short); printf("%*u: unsigned short
", n,size); size = sizeof(int); printf("%*u: int
", n,size); size = sizeof(unsigned); printf("%*u: unsigned
", n,size); size = sizeof(long); printf("%*u: long
", n,size); size = sizeof(unsigned long); printf("%*u: unsigned long
", n,size); size = sizeof(long long); printf("%*u: long long
", n,size); size = sizeof(unsigned long long); printf("%*u: unsigned long long
", n,size); size = sizeof(float); printf("%*u: float
", n,size); size = sizeof(double); printf("%*u: double
", n,size); size = sizeof(long double); printf("%*u: long double
", n,size); size = sizeof(wchar_t); printf("%*u: wchar_t
", n,size); getchar(); return 0; }

2.取得タイプのサイズは、タイプ名または変数名によって異なります.


#include <stdio.h>



int main(void)

{

    int i;

    double d;



    printf("%u, %u
", sizeof(i), sizeof(int)); printf("%u, %u
", sizeof(d), sizeof(double)); getchar(); return 0; }

3.変数名(タイプ名以外)については、sizeofは括弧で囲まないこともできます.


#include <stdio.h>



int main(void)

{

    int i;

    double d;



    printf("%u
", sizeof i); printf("%u
", sizeof d); getchar(); return 0; }

4.sizeof(配列変数)は次元ではなく配列サイズを取得します.これはDelphiとは異なります.


#include <stdio.h>



int main(void)

{

    int nums[10];

    

    printf("%u
", sizeof nums); /* */ printf("%u
", sizeof(nums) / sizeof(int)); /* */ getchar(); return 0; }