カウントを表示するプログラムを作っています。
0
1
2
3
4
6
7
8
9
と出力させたいのにうまくいきません。
どなたか教えてください。
【解決】continueがうまくいきません
-
- 記事: 6
- 登録日時: 7年前
【解決】continueがうまくいきません
最後に編集したユーザー helloworld on 2016年8月25日(木) 11:03 [ 編集 1 回目 ]
Re: continueがうまくいきません
- 変な位置に数字があるので、コンパイルエラーになる
- その蛇足な数字を消すと
- 書式指定文字列が間違っているので、m:という余計な文字列が出力される
- mをインクリメントするタイミングが悪いので、表示する範囲がおかしくなる
例えば余計な数字と文字列を消し、mのインクリメントを出力の後にしてこうするといいでしょう。
#include <stdio.h>
int main(void) {
int m = 0;
while (m < 10) {
if(m == 5) {
m++;
continue;
}
// この部分にあるコードがスキップされる
printf("%d\n", m);
m++;
}
return 0;
}
m++;を複数書く汚さとトレードオフですね。
#include <stdio.h>
int main(void) {
int m = -1;
while (++m < 10) { // ここでインクリメントし、インクリメント後の値をチェック
if(m == 5) {
continue;
}
// この部分にあるコードがスキップされる
printf("%d\n", m);
}
return 0;
}
最後に編集したユーザー みけCAT on 2016年8月25日(木) 10:24 [ 編集 1 回目 ]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: continueがうまくいきません
提示されているプログラムをそのまま動かすと以下の様な出力になります。 あなたの思った結果と何が違っていてどうしたいのでしょうか?helloworld さんが書きました:カウントを表示するプログラムを作っています。
0
1
2
3
4
6
7
8
9
と出力させたいのにうまくいきません。
どなたか教えてください。
A.”m:”がいらないんだけど!
→printfからm:を消してください
B.0から9まで出したいのに1から10まで出力されてるんだけど!
→mの初期値を-1にするか、m++の実行位置をprintfの後とcontinueの前においてください
continueの前にm++を書かないとm==5の状態ではm++が実行されずにcontinueが実行されるため無限ループになります
ちなみにコメントに書かれている「// この部分にあるコードがスキップされる」は
m++をprintfの後ろに書いた際にm:4の出力以降何も出力されない(無限ループしてるので)ことを指しているのでしょうか?
Advanced Supporting Developer
無理やりこじつけ(ぉ
無理やりこじつけ(ぉ
Re: continueがうまくいきません
そもそも、無駄にcontinueなんか使わなければいいのです。helloworld さんが書きました:continueがうまくいきません
適材適所。
#include <stdio.h>
int main(void) {
int m = 0;
while (m < 10) {
if(m != 5) {
// この部分にあるコードがスキップされる
printf("%d\n", m);
}
m++;
}
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
- 記事: 6
- 登録日時: 7年前
Re:解決しました!ありがとうございました!!
解決しました!
ご丁寧に解説していただきありがとうございました!
for文でうまくできたので、
while文でもうまくできるのではないかと思って質問させていただいたきました。
カウントアップを使うときは
-1
で始めるか
continue
を2回使う
のですね。
できれば、
-1で始めない
continueは1回
と思っていたのですが、
これは無理なのですね("^ω^)・・・
勉強になりました。
ありがとうございました!
ご丁寧に解説していただきありがとうございました!
for文でうまくできたので、
while文でもうまくできるのではないかと思って質問させていただいたきました。
カウントアップを使うときは
-1
で始めるか
continue
を2回使う
のですね。
できれば、
-1で始めない
continueは1回
と思っていたのですが、
これは無理なのですね("^ω^)・・・
勉強になりました。
ありがとうございました!
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 【解決】continueがうまくいきません
> できれば、
> -1で始めない
> continueは1回
> と思っていたのですが、
> これは無理なのですね
・-1で始めない
・continueは0回
でよければNo: 4のコードで実現できていると思いますがこれじゃダメですか?
> -1で始めない
> continueは1回
> と思っていたのですが、
> これは無理なのですね
・-1で始めない
・continueは0回
でよければNo: 4のコードで実現できていると思いますがこれじゃダメですか?
Re: Re:解決しました!ありがとうございました!!
どこにそういう回答があったでしょうか。helloworld さんが書きました: continue
を2回使う
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。