Jeg har et while loop der evaluerer en bool, men mit problem er at det simpelthen ikke eksekverer loopet. Jeg kan ikke find ud af hvad der er galt. måske en af jeg kan?!?!
her er lidt kode:
========================
bool flag = false;
...
for (int x = sc_eliminate[round]; x > 0; x--) { //cout << x; //remove a random suitcase //setting it's value to 0 while (flag = false) { int sc = rand() % 26; //cout << sc; if (sc_picked[sc] == 0) { sc_picked[sc] = 1; cout << "Player opened suitcase with value: " << sc_value[sc] << "\n"; flag = true; } else { cout << "Suitcase already picked... Pick another? (press enter)\n"; cin.get(); } } flag = false; }
Hjælp til selvhjælp skriv altid konstant værdierne først i et udtryk så fanger compileren det for dig. Der kunne også være en warning som du har overset men constant først gør at det bliver en compile time fejl istedet for en run time fejl.
Så hvis du have skrevet
while (false = flag)
havde du fået en compiler fejl istedet for en warning og havde så haft mulighed for hurtigere at fange fejlen.
Jeg synes at den omvendte rækkefølge som segmose foreslår er en uskik som gør koden sværere at læse, man siger ikke: "hvis 7 er x" men "hvis x er 7". Det går helt galt hvis man bruger det med < >, udtrykket "hvis 7 er mindre end x" giver ikke mening, det gør "hvis x er større end 7".
Alle moderne kompilere kan sættes til at give en warning hvis man kommer til at bruge = i stedet for ==
Jeg kan godt se hvad du mener Bertel, men jeg synes at warnings har det med at blive ignoreret derfor mener jeg det er bedre sådan, den warning er vist noget man på de fleste compilere skal aktivt slå fra da den er temlig vigtig.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.