「これはヤバかったな」という遅刻エピソード

for 文を用いて下記のように表示されるプログラムを書いています
-100
-99
-98
-97



0
1
2



99
100

要するに-100から100まで1ずつ変化させて表示させるプログラムです。このプログラムを下記のように書きましたが、実行すると77から100までしか表示されません。どうしてでしょうか?
#include <stdio.h>
void main(void)
{
int i;
for(i=-100;i<=100;i++)
{
printf("%d\n",i);
}
}

for文の解釈として、i=-100は-100から、i<=100は100まで、i++は1づつ足していくという風に考えてますが、間違いなのでしょうか?

A 回答 (6件)

多分コマンドプロンプトの画面バッファが25行しかないためです。



printfの手前か後に
Windows専用の環境ならばSleep(1000);
Unix互換環境(CygwinやminGW)ならばsleep(1);
を入れて実行してみてください。

1秒ごとに1行出てくるようになります。
全部で約3分強の時間がかかりますが、
これで全部の行がでていることが確認できるでしょう。

または、
Windowsのコマンドプロンプトであれば、コマンドプロンプトのプロパティで画面バッファの高さを300ぐらいに設定すると画面をスクロールさせることができるかもしれません。
    • good
    • 0
この回答へのお礼

皆様回答ありがとうございます。
ほかのパソコンでやったらできました。
これからもっとC言語勉強していきたいと思います。

お礼日時:2005/05/22 23:07

こんにちは。


\nを入れるとforのおかげで全てに改行が繰り返されて表示が切れますが、
\nを抜くと一行に敷き詰まって表示されますから
コマンドプロンプトの表示領域に全て表示されます。
プログラムとしてはどちらも正しく動いて問題ありません。
ちなみに「|」はキーボードの右上の\キー+shiftで出ます。
    • good
    • 0

> なぜでしょうか?



[スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト]で、
a[Enter]
b[Enter]

と文字を入力(エラーが出る)していくと、だんだん上にスクロールして行き、そのうちaから順番に見えなくなります。
これと同じ事が一瞬にして起こっています。

--
VC++の統合環境の「実行(F5)」なんかから動作させていると、No.2やNo.3さんの方法は使えません。
こっちの説明は面倒なので割愛。


Win2000/XPならば、
[スタート]-[プログラム]-[アクセサリ]-[コマンドプロンプト]
左上のアイコンクリック-[プロパティ]
「~のプロパティ」ダイアログ
「レイアウト」タブ
で画面バッファのサイズ、ウィンドウのサイズやフォントの大きさを変更すると、上下スクロールで見れるかも。
    • good
    • 0

ターミナル上での実行でしたら、



実行ファイル名 > out (リターン)

として、ファイルoutの中身を確認してはどうでしょうか?
    • good
    • 0

> 77から100までしか表示されません。



一瞬で表示されて、画面の上にスクロールして消えちゃってるからでは?
-5から5とかだと大丈夫なのでは?

コマンドプロンプトの表示行数を増やす。
「test.exe | more」などで一時停止。
とか。
    • good
    • 0
この回答へのお礼

>-5から5とかだと大丈夫なのでは?
はい。それくらいなら大丈夫です。
\nをとって改行しないようにしたらちゃんと表示されました。なぜでしょうか?
それと「| 」ってどうやって出すんですか?

お礼日時:2005/05/20 20:52

うーん、まったく問題ないですね。



想像ですが、-100から76までは
単に表示が切れて(スクロールして見えない)いる
だけではないでしょうか?
    • good
    • 0
この回答へのお礼

スクロールできません。77が一番上になってる状態で、それより上はスクロールできません。

ちょっと試したのですが、「\n」をぬかして改行しないようにしたらちゃんと-100から100まで表示されるようになりました。

ということはコマンドプロンプトの表示上の問題だったのでしょうか?

お礼日時:2005/05/20 20:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!