• ベストアンサー

do whileとwhileの違い

do whileとwhileの違いって何ですか? do whileはとりあえず一回処理するとか書いてありましたが、whileは処理してないんですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • morchin
  • ベストアンサー率16% (212/1281)
回答No.4

>do{}while(1)とwhile(1){}の違いは何ですか? 違いはなし。

sora-break
質問者

お礼

回答ありがとうございます。 一番早く回答してくださったのでベストアンサーに選ばせていただきました。

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.3

>do{}while(1)とwhile(1){}の違いは何ですか? >結局繰り返すから一緒だと思うのですが・・・ 「違うのは条件が成り立たない時だけ」と書いたから、「条件が常に成り立つ場合はどっちも一緒」ってのは理解できるかと思います。 重要なのは do{}while(0)とwhile(0){}では、明らかに異なる動作をする って事。 当然ですが do{}while(1)とwhile(1){}では、どちらも同じ動作をする ようになってます。

sora-break
質問者

お礼

回答ありがとうございます。 やっぱり一緒でしたか こう書いてあるサイトを見たので混乱してしまいました。

  • chie65535
  • ベストアンサー率43% (8523/19372)
回答No.2

>do whileとwhileの違いって何ですか? 「条件が成り立ってないとき」の挙動が違う。 do whileは「条件を判定する前に、とりあえず、1回必ず実行し、実行し終わってから条件を判断する」ようになってる。 whileは「まず条件を判定し、成り立ってない場合は、何もしないで終わってしまう」ようになってる。 なお「条件が成り立っているとき」は、どっちもループ内の処理をするから、余り違いは無い。 但し「ループ内の処理が、条件式の結果に影響を及ぼす場合」には、その限りではない。

  • morchin
  • ベストアンサー率16% (212/1281)
回答No.1

do whileは、{}の後に条件をチェックする。 whileは、{}の前に条件をチェックする。 それだけのこと。

sora-break
質問者

補足

迅速な回答ありがとうございます。 書き忘れていましたが具体的に 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でだめなことってあるんですか? 結構困ってます。 ご存知の方はよろしくお願いします。

  • 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"));

  • do while

    do whileの文で do{… }while(c!=1 && c!=2 && c!=3); つまり1,2,3以外の数字を入力した場合はループするようにしました。…は無限ループしないようにしています。実際1,2,3以外の数字を入力しても無限ループしません。しかし、数字以外の文字を入れてしまうと、無限ループします。%dがいけないのでしょうか?初心者ですので分かりやすくよろしくお願いします。多分これだけじゃ情報不足だと思うので、足りない情報があれば言ってください。すぐに書き込みます。

  • 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という値もコピーする。」というのは出来ないと思うのですが、どなたかご教授宜しくお願いします。

  • 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"); } }

  • 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文を作成したいのですが、わかりません。わかる方、教えてください。お願いします。

  • 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」という表現ではだめなのでしょうか? 

  • 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

専門家に質問してみよう