C言語で int型と double型が混在している場合の型変換

Q.C言語で以下のコードを実行した時、ans の値(printfでの表示)はどのようになるでしょうか?

1問目

int ans;
ans = 1/2 + 1/2 + 1/2 + 1/2;
printf( "and = %f\n" , ans );


2問目

int ans;
ans = (double)1/2 + 1/2 + 1/2 + 1/2;
printf( "and = %f\n" , ans );


3問目

int ans;
ans = (double)1/2 + (double)1/2 + 1/2 + 1/2;
printf( "and = %f\n" , ans );


4問目

double ans;
ans = (double)1/2 + (double)1/2 + 1/2 + 1/2;
printf( "and = %f\n" , ans );


5問目

double ans , r;
r = 1;
ans = (double)1/2 + (double)1/2 + 1/2 + r/2;
printf( "and = %f\n" , ans );


6問目

double ans;
ans = 1/2;
printf( "and = %f\n" , ans );




答えは以下のようになります。

1問目:0.000000
2問目:0.000000
3問目:0.000000
4問目:1.000000
5問目:1.500000
6問目:0.000000


いかがでしょうか?
合っていましたか?

この記事へのコメント

この記事へのトラックバック