teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

サンプルプログラムの不具合修正

2016/04/28 05:58

投稿

HiroshiWatanabe
HiroshiWatanabe

スコア2160

answer CHANGED
@@ -1,16 +1,15 @@
1
1
  ```c
2
2
  #include <stdio.h>
3
+ #include <limits.h>
3
4
 
4
5
  int main() {
5
- int k = 1;
6
+ unsigned long long k = 1;
6
7
  int i = 0;
7
- int o;
8
8
  do {
9
- o = k;// オーバーフロー判定用に掛ける前の値を保持しておく
10
- printf("%d!=%d\n", i, k);
9
+ printf("%d!=%d\n", (int)i, (int)k);
11
- k *= ++i;// 前回の計算結果に前回掛けた数+1を順番に掛けていく
10
+ k *= ++i;
12
- } while (o <= k);// 掛けたのに小さくなっている=オーバーフロー=intの限界を超えた..ら終了
11
+ } while (k <= INT_MAX);
13
12
  return 0;
14
13
  }
15
14
 
16
- ```
15
+ ```