- ベストアンサー
2の累乗を計算するプログラムを作ったのですが・・・
C言語を用いて、2の累乗(2,4,8,16・・・)を 計算して表示するプログラムを #include<stdio.h> void main(void) { int i,s; s=1; for(i=1; i<=15; i++) { s=s*2; printf("i=%2d s=%7d\n",s); } } と打ち込んで実行したのですが、結果が i= 1 s= 2 i= 2 s= 4 i= 3 s= 8 i= 4 s= 16 i= 5 s= 32 i= 6 s= 64 i= 7 s= 128 i= 8 s= 256 i= 9 s= 512 i=10 s= 1024 i=11 s= 2048 i=12 s= 4096 i=13 s= 8192 i=14 s= 16384 i=15 s= -32768 のように、2の15乗だけが負になってしまいました。 最初のintをdoubleやfloatに直して実行すればよいのかとも考えたのですが、 実行すると答えがすべて0になってしまい上手くいきませんでした。 どの部分がおかしいのでしょうか・・・;
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- zone29
- ベストアンサー率53% (71/132)
回答No.2
- himajin100000
- ベストアンサー率54% (1660/3060)
回答No.1
お礼
重ねてありがとうございます。 intやlongばかりに目が行ってて、変換指定子まで目が行ってませんでした・・・; 実行してみたところ、 i= 1 s= 2 i= 2 s= 4 i= 3 s= 8 i= 4 s= 16 i= 5 s= 32 i= 6 s= 64 i= 7 s= 128 i= 8 s= 256 i= 9 s= 512 i=10 s= 1024 i=11 s= 2048 i=12 s= 4096 i=13 s= 8192 i=14 s= 16384 i=15 s= 32768 という結果を出すことができました。 ありがとうございます。