C言語で整数値を小数点でキャスト

C言語で,整数値に小数点を付けると,double型になる.

 

動機

1 / 3int / int ,int型で演算されて 0 になるけれど, 1.0 / 3.0浮動小数点型の内,float型とdouble型のどちらになるのでしょうか?

 

ソースコード

#include <stdio.h>
#include <math.h>

int main()
{
    printf("sizeof(int): %d\n", (int)sizeof(int));
    printf("sizeof(float): %d\n", (int)sizeof(float));
    printf("sizeof(double): %d\n", (int)sizeof(double));
    printf("\n");

    printf("sizeof(3): %d\n", (int)sizeof(3));
    printf("sizeof(3.1): %d\n", (int)sizeof(3.1));
    printf("sizeof(3.14): %d\n", (int)sizeof(3.14));
    printf("sizeof(%g): %d\n", M_PI, (int)sizeof(M_PI));

    return 0;
}

 

結果

sizeof(int): 4
sizeof(float): 4
sizeof(double): 8

sizeof(3): 4
sizeof(3.1): 8
sizeof(3.14): 8
sizeof(3.14159): 8

 

結論

C言語で整数値(int型になる)に小数点を付けると,float型ではなくdouble型になります.