- ベストアンサー
do whileとwhileの違い
do whileとwhileの違いって何ですか? do whileはとりあえず一回処理するとか書いてありましたが、whileは処理してないんですか?
- sora-break
- お礼率78% (26/33)
- C・C++・C#
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>do{}while(1)とwhile(1){}の違いは何ですか? 違いはなし。
その他の回答 (3)
- chie65535
- ベストアンサー率43% (8523/19372)
>do{}while(1)とwhile(1){}の違いは何ですか? >結局繰り返すから一緒だと思うのですが・・・ 「違うのは条件が成り立たない時だけ」と書いたから、「条件が常に成り立つ場合はどっちも一緒」ってのは理解できるかと思います。 重要なのは do{}while(0)とwhile(0){}では、明らかに異なる動作をする って事。 当然ですが do{}while(1)とwhile(1){}では、どちらも同じ動作をする ようになってます。
お礼
回答ありがとうございます。 やっぱり一緒でしたか こう書いてあるサイトを見たので混乱してしまいました。
- chie65535
- ベストアンサー率43% (8523/19372)
>do whileとwhileの違いって何ですか? 「条件が成り立ってないとき」の挙動が違う。 do whileは「条件を判定する前に、とりあえず、1回必ず実行し、実行し終わってから条件を判断する」ようになってる。 whileは「まず条件を判定し、成り立ってない場合は、何もしないで終わってしまう」ようになってる。 なお「条件が成り立っているとき」は、どっちもループ内の処理をするから、余り違いは無い。 但し「ループ内の処理が、条件式の結果に影響を及ぼす場合」には、その限りではない。
- morchin
- ベストアンサー率16% (212/1281)
do whileは、{}の後に条件をチェックする。 whileは、{}の前に条件をチェックする。 それだけのこと。
補足
迅速な回答ありがとうございます。 書き忘れていましたが具体的に do{}while(1)とwhile(1){}の違いは何ですか? 結局繰り返すから一緒だと思うのですが・・・
関連するQ&A
- do - while文
こんにちは、tomokooです。 下記の様にソースを書きました。 rsはResultSetです。 ---------------------------- while(条件A){ 処理; rs.next(); } while(rs.next()){ 処理; } ---------------------------- うまくプログラムは動いたのですが 結果を見て1行飛ばされることに気づきました。 だから ---------------------------- while(条件A){ 処理; rs.next(); } do{ 処理; }while(rs.next()}; ---------------------------- としたところ、処理の中の rs.getString(i); //iは初期化済み で落ちてしまいます。 whileでよくてdo-whileでだめなことってあるんですか? 結構困ってます。 ご存知の方はよろしくお願いします。
- 締切済み
- Java
- do~while文がよくわかりません
今参考書で勉強しているのですが、do~while文がよくわかりません 。コードは下記のようになります。どうして前の処理結果が足されていくのか理解できません。こんな馬鹿にどうかわかりやすくご教授していただけないでしょうか!? <?php $s = $i = 0; do{ ++$i; $s += $i; }while($i < 10); print "1 から $i までの和は $s"; ?>
- ベストアンサー
- PHP
- do while文の条件
do while文の条件にprintfを使う場合、これはありなんでしょうか? 内容:0が入力されていたら、whileのprintfを実行してからdoに戻る。0以外ならprintfを実行しないで処理を抜ける。 int i; do { printf("0以外の数字を入力してください。\n"); scanf("%d",&i); }while(i == 0 && printf("まじめに入力してください。\n"));
- 締切済み
- C・C++・C#
- do-while文について
参考書を読んでいて分からないところが有りました。 「配列aの値を先頭から見ていき、その値が-1になるま配列bにコピーしていく。そのとき-1という値もコピーする。という処理をするものです。-1という値もコピーするため、このループは最低1回は実行されることになります。 i=0; do{ b[i]=a[i]; }while(b[i++]!=-1); 」 この場合、a[0]が-1のときにはb[0]に-1がコピーされるかもしれませんが、そうでない場合は「そのとき-1という値もコピーする。」というのは出来ないと思うのですが、どなたかご教授宜しくお願いします。
- ベストアンサー
- C・C++・C#
- while doについて
九九の表で、forの2重のプログラムは作成できたのですが、whileとdo~whileを使って書き直すやり方がわからないのです。 どうか教えてください。お願いします。 #include <stdio.h> main() { int i,j; for(j = 1; j <= 9; j++){ for(i = 1; i <= 9; i++) printf("%3d", j*i); printf("\n"); } }
- 締切済み
- C・C++・C#
- perlのdo-while文で抜け出せない
perlのwhile,do-while,last文に関する質問です。 1) code1のようなプログラムを作ったのですが eでdo_whileを抜け出すことができませんがなぜでしょうか。 ---code1(eで抜け出せない)(NG)--- my $sum=0; do{ my $a=<STDIN>; chomp($a); $sum=$sum+$a; }while($a ne 'e'); print $sum; -------------------------------- 2) 抜け出す方法をいろいろ試していたら while(1)にしてlastで抜けるようにすると code2ではeで抜け出すことができるように なりましたが、 do~while(1)にしたcode3では、 「Can't "last" outside a loop block at …」C というエラーが発生します。 code2とcode3はwhileがdo~whileになって 条件を見る位置がループの始めか終わりの 違いだけなのに、なぜ、code2ではOKで、 code3ではエラーになるのでしょうか。 ---code2(eで抜け出せる)(OK)----- my $sum=0; while(1) { my $a=<STDIN>; chomp($a); last if ($a eq 'e'); $sum=$sum+$a; }; print $sum; --------------------------------- ---code3(エラーになる)(NG)----- my $sum=0; do{ my $a=<STDIN>; chomp($a); last if ($a eq 'e'); $sum=$sum+$a; }while(1); print $sum; --------------------------------- よろしくお願いします。 Windows7 , ActivePerl(v5.16.3)
- ベストアンサー
- Perl
- Java do while文
do while文を使って、int num = new Random().nextInt(10);を利用して、ランダム数値が2で割り切れるか0だったらwhile文を終わらせるdo-while文を作成したいのですが、わかりません。わかる方、教えてください。お願いします。
- 締切済み
- Java
- do while 文の使い方
#include<stdio.h> main() { int i; do{ scanf("%d",&i); }while(i%6==1,2,3,4,5); } だと6の倍数打っても終わらないのですが、 include<stdio.h> main() { int i; do{ scanf("%d",&i); }while(i%6!=0); } } だと6の倍数を入力すれば終了します。 やはり、「1,2,3,4,5」という表現ではだめなのでしょうか?
- ベストアンサー
- C・C++・C#
- VBA 九九 Do While
VBAのDo Whileステートメントを使って九九の表をつくりたいのですが、何度やっても途中で詰まり、実行に至りません。 For NextとDo untilではできたと思うのですがDo Whileがどうしてもわからなくて… どなたか助けてください。お願いします。 Sub 九九計算_for() Dim i, j As Integer For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = i * j Next Next End Sub Sub 九九計算_do_until() j = 1 Do i = 1 Do Cells(j, i).Value = i * j i = i + 1 Loop Until i = 10 j = j + 1 Loop Until j = 10 End Sub
- ベストアンサー
- Visual Basic
お礼
回答ありがとうございます。 一番早く回答してくださったのでベストアンサーに選ばせていただきました。