C言語で整数値を小数点でキャスト
C言語で,整数値に小数点を付けると,double型になる.
動機
1 / 3
は int / 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型になります.