-7
#include <iostream>
#include <windows.h>
#include <cstdlib>
using namespace std;
bool setstart = true;
int main(){
  int x;
  int y;
  cout << "Welcome to the guessing game\n";
  do {
 cout << "Please enter a number from 0 to 100: ";
 cin >> x;
 } while (x < 0 || x > 100);Sleep(2000);
 system("cls");
 cout<<"ok player 2 pick the guess";
 cin>>y;
 if (x == y){
  cout<<"congrats you got it right";
       }
        else{
        if (x < y){
        cout<<"Go lower";}
        else {
        if (x > y){
        cout<<"higher";}}
        }
 system("pause>nul");
  return 0;
  }

私は本当にそれを理解していません。どのように使用しますか?また、do と while は Do が起こっていることを意味し、それが起こっている間は While をしますか? これは私の友人が私のために作ったコードですが、本当に具体的に説明できる人はいますか?

4

4 に答える 4

4

ループは、条件がチェックされる前に 1 回だけ実行されdo {} while;ます。

do {
   "//code stuff here"
} while (condition);

と同等です

"//code stuff here"
while (condition) {
  "//code stuff here"
}
于 2013-07-07T20:40:37.653 に答える
1

この特定の構造の背後にある話は、コンパイラの始まりと限られた CPU での使用に由来しています。

当時、while() でループを開始すると、do/while バージョンよりも長いコードが生成されました。

while( condition ) は条件を 1 回評価し、最後にジャンプしてループを開始しました。

if (!cond) jump to 'END' // PRE CHECK
else
'BEGIN'
do work 
if (cond) goto 'BEGIN'
'END'

一方、do{} while にはこの「事前チェック」がなく、アセンブリのいくつかの指示を節約できます。パフォーマンスの高いコードの場合、do{} while を使用すると、数パーセントの改善が得られる可能性があります。

于 2013-07-07T20:50:51.703 に答える
0

サイトから:

ここに画像の説明を入力

例:

#include <iostream>
using namespace std;

int main ()
{
   // Local variable declaration:
   int a = 10;

   // do loop execution
   do
   {
       cout << "value of a: " << a << endl;
       a = a + 1;
   }while( a < 20 );

   return 0;
}

たくさんの練習が必要です。そうすれば理解できるようになります。あきらめないで、ただ学んでください。まともな本を買って、プログラマーの友達を見つけて、IRC に参加してください。学び!あなたの未来への扉です。

于 2013-07-07T20:40:57.283 に答える
0

while (cond) { ...body... }do { ...body... } while (cond)ほぼ同じです。

唯一の違いは、最初while (cond)に実行する前に条件をテストする...body...のに対し、最初に条件をチェックする前に1 回do { ...body... } while (cond)実行することです。...body...

あなたが望むかもしれない理由do whileは、あなたがテストしている条件がループ自体の中で設定されているが、ループの前では設定されていないからです。この場合、ループxは範囲内にあるかどうかをチェックしますがx、ループ本体が 1 回実行されるまではわかりません。

于 2013-07-07T20:41:13.660 に答える