
c言語初心者です。
13までの階乗の値を計算するプログラムを下のように書いたのですが、
#include <stdio.h>
main()
{
int N, fact;
fact=1;
for(N=1; N<=13; ++N){
fact=fact*N;
printf("%d!=%d\n",N, fact);
}
}
このプログラムを実行してみると、12!までは正しい値が出力されるのですが、13!の値が1932053504と出力され、計算機の値と違います。
どこが間違っているのでしょうか。どなたかご教授お願いします。
No.2ベストアンサー
- 回答日時:
fact を int 宣言しているので、 4byte 変数です。
12! = 479001600 = 0x1C8CFC00
13! = 6227020800 = 0x017328CC00
このように、13! 以上は、4byte を超えてしまいます。
従って、4byte を超えた分が無視されて、
13! = 6227020800 = 0x017328CC00
(4byte分のみ)==> 0x7328CC00 = 1932053504
という結果です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語プログラミングについて f...
-
【C#】SQL文の中に変数を埋め込...
-
2の補数を計算するプログラム
-
分数の足し算をさせるプログラ...
-
ヒストグラム均等化処理プログラム
-
再帰処理をループ処理に変換
-
C++で表を作成したいのです ...
-
再起呼び出しの回数をカウント...
-
モータの制御
-
C言語でテーブル引きしたら速度...
-
最大の四角形を求めるプログラム
-
OpenCVによる4値化について
-
OpenGLの惑星プログラム
-
C++ bmp 透過処理
-
カードシャッフルのブログラム...
-
文字列と変数の値をエディット...
-
3のつく数と3の倍数を表示 C言語
-
ライントレース:C言語 物理セン...
-
条件が多い場合
-
迷路の解を見つけるアルゴリズム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で%を使わない余りの出し方
-
カードシャッフルのブログラム...
-
2の補数を計算するプログラム
-
OpenCVによる4値化について
-
ヒストグラム均等化処理プログラム
-
【C#】SQL文の中に変数を埋め込...
-
再起呼び出しの回数をカウント...
-
intとlongは同じ?
-
C++で表を作成したいのです ...
-
画像の拡大・縮小
-
argvのNULLチェック
-
c言語プログラミングについて f...
-
ヌメロンのプログラム
-
C言語でDOS画面のプログラム(...
-
OpenGLの惑星プログラム
-
opencvとmbedのシリアル通信で...
-
C言語プログラミング 漸化式に...
-
3のつく数と3の倍数を表示 C言語
-
猫でもわかるゲームプログラミ...
-
条件が多い場合
おすすめ情報