Kan du erklære flere variabler i en for-loop i C++?

Kan du erklære flere variabler i en for-loop i C++?
Erklæring om en variabel, betyr å identifisere et minneplass for variabelt innhold. Vel, svaret er, ja. Begynn med å vurdere følgende kodesegment:
int i = 0;
int j = 0;
int k = 0;

Dette er tre uttalelser som kan skrives i en uttalelse, som:

int i = 0, j = 0, k = 0;

Det er en datatype; uttrykkene er atskilt med komma. En uttalelse avsluttes med en semikolon. Flere variabler er blitt erklært her i en uttalelse.

Vurder nå følgende trinnvise utsagn:

int i ++;
int j ++;
int K ++;

Disse tre uttalelsene kan erstattes av en uttalelse, som følger:

int i ++, J ++, K ++;

Her er det tre uttrykk i en uttalelse for en datatype.

Vurder også følgende tre betingede uttalelser:

Jeg < 10;
j < 10;
k < 10;

Disse tre uttalelsene kan erstattes av en uttalelse, som følger:

Jeg < 10 && j < 10 && k < 10;

Her har tre uttalelser blitt kombinert til ett uttrykk for en spesiell form. Disse uttrykkene er ikke atskilt med komma som i de ovennevnte tilfeller, men de er kombinert med det logiske og.

Denne artikkelen forklarer hvordan flere variabler kan erklæres og brukes, i en for-loop, med regelmessige korrespondanser. Veldig enkle eksempler brukes til illustrasjoner.

Artikkelinnhold

  • En dimensjonal for-loop
  • To dimensjonal for-loop
  • Tredimensjonal for-loop
  • Mulig fordel
  • Konklusjon

En dimensjonal for-loop

mens du er sløyfe

En stug-loop for å vise tall fra null til 9, er som i følgende program:

#inkludere
ved hjelp av navneområdet STD;
int main ()

int i = 0;
mens jeg < 10)
cout << i << endl;
i ++;

retur 0;

Den første linjen i programmet inkluderer iostream -biblioteket for cout -objektet. Neste linje i programmet er en uttalelse. Det sikrer at ethvert navn som brukes er fra C ++ standardbiblioteket med mindre annet er angitt.

I hovedfunksjonen () er det initialiseringsuttalelsen, av heltallet, i = 0. Så er det mens-sløyfen, som tar hensyn til initialiseringsuttalelsen. Mens-betingelsen er (jeg < 10), and as long as i is less than 10 (never equal to 10), the cout iostream object in the body of the while-loop displays the value of i. The next statement in the while-loop increments i (adds 1 to the value of i).

Utgangen er som følger, men vises vertikalt:

0 1 2 3 4 5 6 7 8 9

En dimensjonal for-loop

Koden i hovedfunksjonen () ovenfor, er gjengitt, i det følgende programmet, som en for-loop:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0; i < 10; i++)
cout << i << endl;

retur 0;

Utgangen er den samme som i ovennevnte tilfelle. Initialiseringsuttalelsen for ovennevnte kode er nå den første uttalelsen i parentesene til For-loop, etterfulgt av en semikolon. Mens-betingelsen for ovennevnte kode er nå den andre uttalelsen i parentesene til For-loop, etterfulgt av en semikolon. Økningserklæringen i kroppen til While-Loop, for forrige kode, er nå den tredje uttalelsen i parentesen til For-loop. Det blir ikke fulgt av en semikolon fordi det er den siste uttalelsen i parentesene. Den eneste uttalelsen i For-loop viser verdien av i.

To dimensjonal for-loop
Nestet mens du er sløyfe

Ovennevnte endimensjonale for-loop viser en kolonne, der hver celle har et tall, verdien av i. En stug-sløyfe, hekket i en annen mens-sløyfe, ville vise en tabell, der hver celle ville ha et tall (verdien av j på den posisjonen). Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

int i = 0;
mens jeg < 5)
int j = 0;
mens (j < 5)
cout << j << ";
J ++;

cout << endl;
i ++;

retur 0;

Utgangen er:

0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4

I -variabelen bestemmer radene. J -variabelen bestemmer kolonnene. Maksimumsverdiene for I og J er hver 4 i denne koden. Ingen verdi av jeg skrives ut. For hver verdi av j skrives verdien av j horisontalt. J økes for å skrive ut neste verdi horisontalt for hver linje.

Det er to initialiseringsuttalelser: en for jeg og en for j, begge initialisert til null. Initialiseringsuttalelsen for J er innenfor den ytre sløyfen. På denne måten reinitialiseres J for hver rad (hver horisontale linje). På denne måten kan J produsere tall fra 0 til 4 for hver rad. Verdien av jeg skrives aldri ut; det indikerer bare radnummeret. Jeg er økt utenfor og under den nestede sløyfen. Jeg er økt med det formålet med neste rad.

Nestet for loop

Følgende nestet for-loop produserer samme resultat (tabell) som ovennevnte nestet mens loop:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
cout << j << ";

cout << endl;

retur 0;

Hver for-loops parenteser har sin egen initialiseringsuttalelse, sin egen betingelseserklæring og sin egen økning i løpet av.

En mens-sløyfe

Tabellutgangen ovenfor kan produseres av en mens-sløyfe, med en initialiseringsuttalelse og en tilstandserklæring. Omfordeling av null til j og økning av I må imidlertid forekomme i en IF-konstruksjon. Følgende kode illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

int i = 0, j = 0;
mens jeg < 5 && j <5)
cout << j << ";
J ++;
if (j == 5)
cout << endl;
j = 0;
i ++;


retur 0;

Utgangen er den samme tabellen som den ovenfor.

En for-loop

Tabellutgangen ovenfor kan produseres av en for-loop, med en initialiseringsuttalelse og en tilstandserklæring. Omfordeling av null til j og økning av I må imidlertid forekomme i en IF-konstruksjon. Følgende program illustrerer dette:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0, j = 0; i < 5 && j <5; j++)
cout << j << ";
if (j == 4)
cout << endl;
J = -1;
i ++;


retur 0;

Utgangen er den samme tabellen som den ovenfor. Men her, siden J økes på slutten av sløyfen, i parentesene, er IF-kondisjonen (J == 4), og J blir tildelt, -1 for hver rad.

Det som er romlig her er at to variabler er blitt erklært i en for-loop. Og så kan flere variabler erklæres i en for-loop.

Ledende diagonal adressering

I et firkantet bord er den ledende diagonalen diagonalen fra den øverste enden til den nederste høyre enden. Følgende program viser koordinatene til den ledende diagonalen i tabellen ovenfor:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0, j = 0; i < 5 && j <5; i++,j++)
cout << i << ',' << j << ";

cout << endl;
retur 0;

Utgangen er:

0,0 1,1 2,2 3,3 4,4

Legg merke til at i programmet er to variabler blitt erklært i parentesene til for-loopen; Tilstanden har de to variablene, relatert av det logiske og; og trinnserklæringen har de to variablene, hver økt ved å legge til en. Under denne tilstanden skriver den ene uttalelsen i kroppen til for-loop ut koordinatene til den ledende diagonalen.

Tredimensjonal for-loop

Det kan være tungvint å skrive ut alle verdiene til cellene i en kube. Følgende program skriver bare ut koordinatene til den ledende diagonalen til en kube:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0, j = 0, k = 0; i<5&&j<5&&k<5; i++,j++,k++)
cout << i << ',' << j << ',' << k << ";

cout << endl;
retur 0;

Utgangen er:

0,0,0 1,1,1 2,2,2 3,3,3 4,4,4

Legg merke til at initialiseringsuttalelsen har tre variabler; Tilstandsuttalelsen har de tre variablene, og trinnserklæringen har de tre variablene. Det er bare en uttalelse i kroppen til for-loop.

Mulig fordel

Tenk på en enkelt for-loop for å vise alle verdiene til cellene i en firkantet bord:
Å ha de to variablene i initialiseringsuttalelsen og i tilstanden gir ingen fordel i hastighet, sammenlignet med situasjonen der en sløyfe er nestet.

Imidlertid, hvis bare utvalgte verdier i tabellen skal nås, vil det å ha de to variablene, i initialiseringsuttalelsen, i tilstandsuttalelsen og i trinnserklæringen, gi en fordel i hastighet; i den forstand at alle verdiene ikke vil få tilgang til, før du eliminerer mange av dem. I det følgende programmet skrives hvert annet koordinatpar, i det ledende diagonalen,:

#inkludere
ved hjelp av navneområdet STD;
int main ()

for (int i = 0, j = 0; i < 10 && j <10; i+=2,j+=2)
cout << i << ',' << j << ";

cout << endl;
retur 0;

Utgangen er:

0,0 2,2 4,4 6,6 8,8

Det er fremdeles bare en uttalelse i for-loop. Å få fordel i hastighet, på denne måten, innebærer å inkludere ytterligere selektiv logikk i tilstandserklæringen og/eller i inkrementserklæringen. Initialiseringsuttrykkene i initialiseringsuttalelsen trenger kanskje ikke initialiseres til null.

I koden ovenfor er trinnserklæringen:

i+= 2, j+= 2

som betyr,

i = i+2, j = j+2;

Konklusjon

Ja, jeg kan erklære flere variabler i en for-loop. Og du kan også nå erklære flere variabler, i en for-loop, som følger: bare skille flere variabler i initialiseringsuttalelsen med komma. Ikke glem å avslutte den komplette initialiseringsuttalelsen med en semikolon. Hvis tilgangen til elementene i strukturen må være selektiv, kan det hende at disse variablene også må brukes, i tilstanden og/eller trinn-utsagnene, i parentesene til For-loop, muligens med noen ekstra logikk.