1~50までの数字をかける

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
愛川

1~50までの数字をかける

#1

投稿記事 by 愛川 » 15年前

お久しぶりですが、質問させていただきます。
1×2×3×…×50の計算を行うプログラムを作っています。
プログラムは以下のようになり、エラーも出ないのですが、
実行すると「0」が出力されてしまいます。
どこか間違っている点、直したほうが良い点がありましたら教えていただきたいです。
よろしくお願いいたします。
OSはWindows XP、Visual C++を使用しています。
#include<stdio.h>
int main(void){
    int s = 1, c;
    for(c = 1; c < 51; c++){
        s = s * c;
    }
        printf("%d\n", s);
        return(0);
}
画像

たかぎ

Re:1~50までの数字をかける

#2

投稿記事 by たかぎ » 15年前

処理系不明なので正確なことはいえませんが...

50!の計算結果を格納するには、ふつうint型では役不足です。
double型やlong double型なら表現範囲としてはOKですが、ふつう有効桁が足りません。
有効桁数をどう考えるかにもよりますが、多倍長演算が必要になると思います。

ところで、50!と決まっているのであれば、これは実質的に定数ですね。
それであれば、机上で計算して、文字列を出力するだけにするのもひとつの手です。
というか、静的に値が求まるのであれば、そうすべきです。

愛川

Re:1~50までの数字をかける

#3

投稿記事 by 愛川 » 15年前

ありがとうございます。
double型にしたらできました。 画像

たかぎ

Re:1~50までの数字をかける

#4

投稿記事 by たかぎ » 15年前

> double型にしたらできました。

本当にそれでいいんですか?

閉鎖

“C言語何でも質問掲示板” へ戻る