C言語でフィボナッチ数列表示するプログラム書いたんだが途中からマイナスになる

1 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:56:11.822 ID:7OFVhFzI0
なぜなんだぜ?
2 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:56:47.306 ID:HzDIybf/0
うんこ
3 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:56:47.768 ID:VbJblqMW0
intmax超えたから
9 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:58:01.859 ID:7OFVhFzI0
>>3
>>4
なるほどそういうことか
4 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:56:50.506 ID:k60HPpj60
オーバーフローやろ
5 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:56:54.625 ID:ML+8fIGf0
どぼじで
6 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:57:13.378 ID:XQEsaxJf0
型の最大値超えたから
7 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:57:36.215 ID:fh/Mt3+00
鬼威惨!ゆっくりしていってね!
8 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:57:42.373 ID:7OFVhFzI0
ソースはこれ
#include <stdio.h>

int main() {

int number = 0;
int a=0 , b = 1, s=0 ;

while (number < 100000) {

a = b;
b = s;
s = a + b;

printf("%d,", s);
number++;
}
}

10 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:58:27.642 ID:CTg7FLOra
フィボナッチ数列とか基本中の基本だろ
11 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 06:58:52.719 ID:XQEsaxJf0
フィボナッチはintじゃ全然足りないよ
12 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:01:17.532 ID:y1NTHlJK0
こんなゴミプログラムをCでやる意味ある?
JavaScriptでもやってろや
13 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:03:09.589 ID:7OFVhFzI0
longにしたわ
15 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:04:46.435 ID:XQEsaxJf0
>>13
unsignedつけるともっと大きくなるよ
あと処理系によってはlong longとかもある
14 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:03:58.211 ID:XQEsaxJf0
フィボナッチとか数が大きくなるのをやるなら筆算の仕組みを使って計算結果を配列に桁ごとに格納する関数を書くといい
基本学べるからCでやること自体は全く問題ない
16 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:04:58.757 ID:HzDIybf/0
>>14
なるほどこんな対処法あんだな
25 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:12:51.513 ID:7OFVhFzI0
>>14
配列かあ
>>17
long longもやってみたけどlongと変わらなかった…
28 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:19:49.293 ID:XQEsaxJf0
>>25
はっきりしないからとりあえずlongの前にunsignedつけるといい
それだけで倍になるから
17 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:05:25.504 ID:9vu9TL670
x64のC言語だとlongって32bitじゃない?
long longが64bitだと思う
21 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:10:56.995 ID:k60HPpj60
>>17
windows64bitだと32bit
Ubuntu64bitだと64bitの罠があるから気をつけろ

uint64_tを使うべき

24 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:12:44.247 ID:9vu9TL670
>>21
この規模ならlong longでいいんじゃないの?
64bit以上だし
18 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:07:11.327 ID:CQ8HRbFg0
頭いいのか悪いのかよく分からんスレだな…
19 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:07:16.445 ID:z3jEC8oq0
覆面算でも解くプログラム作ると面白いぞ
20 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:08:08.275 ID:PxJlH+Zh0
使わないだろうけどまたいらぬ知識が増えてしまったわ
23 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:12:19.061 ID:mXqXN5ZS0
C使うならBCDで計算するのにも挑戦しよう
他の素人御用達スクリプト言語とは違うやりがいを感じられるぞ
27 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:19:44.139 ID:qaT7r5EN0
intは意外と早くオーバーフローするよ
a=0として無限ループ内でif(a==0){初期化処理} a++
というプログラムがあったけどaがひたすら足されまくるからまた0に戻る時が来るんだ
こういうプログラムが仕込まれた医療機器があったらしい
29 名前:ひみつの名無しさん 投稿日時:2020/05/11(月) 07:23:25.908 ID:qmBuxTIJ0
多倍長整数ライブラリを導入しよう
それかデカい数字を扱うのが得意なコボルとか

コメント

タイトルとURLをコピーしました