基本的だと思いますが教えてください。
#include <stdio.h>
int main(void)
{
int na, nb:
puts("二つの整数を入力してください.");
printf("整数A:”); scanf("%d",&na);
printf("整数B:”); scanf("%d",&nb);
printf("それらの平均は%fです。\n,(na+nb)/2.0);
return(0);
}
これでintの形で最後のprintfが%fなのですがintは%dとなるはずなのですがこれは2。0という実数値で割るから答えは実数値になりますよ。という意味で%fとしたのでしょうか?確かにこうしないと正しい値がでてこないのです。教えてください。
昨日はじめました。
Re:昨日はじめました。
おっしゃるとおりです。
なお、アップロードされたソースにはいくつか問題があって、
コンパイルできないです。
次回からは、コンパイルできたソースをコピー&ペーストしてください。
その際、字下げを活かすために、ソースの前後を<pre>と</pre>タグで
はさんでください。便宜上ここでは<と>を全角で書いていますが、
実際は半角です。
なお、アップロードされたソースにはいくつか問題があって、
コンパイルできないです。
次回からは、コンパイルできたソースをコピー&ペーストしてください。
その際、字下げを活かすために、ソースの前後を<pre>と</pre>タグで
はさんでください。便宜上ここでは<と>を全角で書いていますが、
実際は半角です。
Re:昨日はじめました。
ミスありましたこれです。
#include <stdio.h>
int main(void)
{
int na, nb;
puts("二つの整数を入力してください.");
printf("整数A:"); scanf("%d",&na);
printf("整数B:"); scanf("%d",&nb);
printf("それらの平均は%fです。\n",(na + nb)/2.0);
return(0);
}
#include <stdio.h>
int main(void)
{
int na, nb;
puts("二つの整数を入力してください.");
printf("整数A:"); scanf("%d",&na);
printf("整数B:"); scanf("%d",&nb);
printf("それらの平均は%fです。\n",(na + nb)/2.0);
return(0);
}
Re:昨日はじめました。
> 2。0という実数値で割るから答えは実数値になりますよ。という意味で%fとしたのでしょうか?
その理解で間違いではありません。
C/C++の計算規則では、
・int と int の計算結果は int
・int と double の計算結果は double
という規則があります。
さらに、
・小数点を伴わない数値定数は int
・小数点を伴う数値定数は double
という規則があります。
これを適用して、
(na + nb) の 結果は int
(na + nb) / 2 の結果は int (小数点無し)
(na + nb) / 2.0 の結果は double (小数点有り。 int / double の計算)
となります。
その理解で間違いではありません。
C/C++の計算規則では、
・int と int の計算結果は int
・int と double の計算結果は double
という規則があります。
さらに、
・小数点を伴わない数値定数は int
・小数点を伴う数値定数は double
という規則があります。
これを適用して、
(na + nb) の 結果は int
(na + nb) / 2 の結果は int (小数点無し)
(na + nb) / 2.0 の結果は double (小数点有り。 int / double の計算)
となります。
Re:昨日はじめました。
たろうさんのご回答
>ちなみに%.1fとかにしとけばOK!
を補足させて頂くとすると、
%f と %.1f との違いは小数点何位まで表示するかの違いです。
%fのままでは大量に不必要な小数まで表示されていると思います。
しかし%.nfのnの部分に数字を入れることで、小数点第n位まで表示することが出来ます。
小数点の無い表示の時も、これは結構使えます。
綺麗にそろってひょうじされるはずです。
これは5スペース分の領域を使って表示するという意味なので、値がすくなくても5スペース分で表示されるので
値に関係なく綺麗にそろって表示されるのです。
色々試してみてください。
>ちなみに%.1fとかにしとけばOK!
を補足させて頂くとすると、
%f と %.1f との違いは小数点何位まで表示するかの違いです。
%fのままでは大量に不必要な小数まで表示されていると思います。
しかし%.nfのnの部分に数字を入れることで、小数点第n位まで表示することが出来ます。
小数点の無い表示の時も、これは結構使えます。
#include <stdio.h> int main() { printf("%5d\n",1234); printf("%5d\n",12); printf("%5d\n",123); return 0; }これを実行してみてください。
綺麗にそろってひょうじされるはずです。
これは5スペース分の領域を使って表示するという意味なので、値がすくなくても5スペース分で表示されるので
値に関係なく綺麗にそろって表示されるのです。
色々試してみてください。