Permalänk
Medlem

C++ Nybörjare: Arrays

Hej igen kära sweclockers medlemmar, jag håller på att lära mig arrays och har stött på ett exempel som jag inte riktigt förstår hur det fungerar. Jag undrar därför om någon av er kan förklara för mig.

Här är exemplet jag inte förstår:

// arrays example #include <iostream> using namespace std; int billy [] = {16, 2, 77, 40, 12071}; int n, result=0; int main () { for ( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout << result; return 0; }

Detta ger:

12206

Koden har alltså slagit ihop alla värden i våra 5 arrays. Men varför.

Om jag har tänkt rätt så är int n == 5.

Alltså billy[n] == billy[5] vilket borde ge runtime error då vi inte har 6 Arrays (array 5 skrivs som 4 eftersom man börjar med 0)

Istället har den alltså adderat värdet av våra arrays, varför?

Visa signatur

Asus P8P67 Deluxe B3 | Intel i7-2600k@3,4GHz | 16 GB Corsair Vengeance LP 1600Mhz CL9 | Asus GTX 580 Matrix@900Mhz | Corsair Force GT 120GB | WD Caviar Black 1TB | Corsair 850 AX | Fractal Design R4 | Dell u2410 | Qpad MK-80 | QPad 5K

CITERA FÖR SVAR!

Permalänk
Medlem

Du har en array, billy, med fem värden i. billy[0], billy[1], billy[2], billy[3], billy[4].
Din for-loop börjar med n = 0 och slutar när n blir 5. Den går inte in i loopen när n = 5.
Loopen kommer alltså att öka på result med billy[n] hela tiden, och n går från 0 till 4.
Det blir alltså 16 + 2 + 77 + 40 + 12071 = 12206.

Permalänk
Medlem
Skrivet av Xabin:

Du har en array, billy, med fem värden i. billy[0], billy[1], billy[2], billy[3], billy[4].
Din for-loop börjar med n = 0 och slutar när n blir 5. Den går inte in i loopen när n = 5.
Loopen kommer alltså att öka på result med billy[n] hela tiden, och n går från 0 till 4.
Det blir alltså 16 + 2 + 77 + 40 + 12071 = 12206.

Jaha okej xD

Tack så mycket för hjälpen och det snabba svaret =D

Visa signatur

Asus P8P67 Deluxe B3 | Intel i7-2600k@3,4GHz | 16 GB Corsair Vengeance LP 1600Mhz CL9 | Asus GTX 580 Matrix@900Mhz | Corsair Force GT 120GB | WD Caviar Black 1TB | Corsair 850 AX | Fractal Design R4 | Dell u2410 | Qpad MK-80 | QPad 5K

CITERA FÖR SVAR!

Permalänk
Medlem

Jag brukar tänka det som att n aldrig når 5. n ska vara mindre än 5, och börja på noll, det sista heltalsvärdet före 5 är 4, alltså 0,1,2,3,4 vilket är 5 värden.

Visa signatur

ASUS ROG STRIX Z270H GAMING, i7 7700K, MSI GTX 1080 Ti 11 GB Gaming, Corsair HX 850W, Corsair 16GB, Samsung 850 500 GB, Samsung 830 256GB, WD Black 1TB, BenQ XL2420T

Permalänk
Medlem
Skrivet av davaa:

Jag brukar tänka det som att n aldrig når 5. n ska vara mindre än 5, och börja på noll, det sista heltalsvärdet före 5 är 4, alltså 0,1,2,3,4 vilket är 5 värden.

Skriver man n<=5 så får man garanterat med 5, och som du tänker är som jag tänker, då tecknet < betyder mindre än, och när de är lika gäller det inte.

Permalänk
Medlem
Skrivet av Dalton Sleeper:

Skriver man n<=5 så får man garanterat med 5, och som du tänker är som jag tänker, då tecknet < betyder mindre än, och när de är lika gäller det inte.

Skrivet av davaa:

Jag brukar tänka det som att n aldrig når 5. n ska vara mindre än 5, och börja på noll, det sista heltalsvärdet före 5 är 4, alltså 0,1,2,3,4 vilket är 5 värden.

Fast n blir 5.

int n; for (n=0; n<5; ++n); cout << n;

Spottar ut 5.

Visa signatur

citera!

Permalänk
Medlem
Skrivet av Dosshell:

Fast n blir 5.

int n; for (n=0; n<5; ++n); cout << n;

Spottar ut 5.

precis, men det är ju då villkoret blir false, och hoppar ur loopen, så n=5 kommer aldrig att vara synligt i loopblocket.

Permalänk
Medlem
Skrivet av Dalton Sleeper:

precis, men det är ju då villkoret blir false, och hoppar ur loopen, så n=5 kommer aldrig att vara synligt i loopblocket.

Ja, precis!
Jag ville bara betona för andra som kanske läser tråden att det kan i vissa fall bli problematiskt att tänka att n aldrig blir 5, speciellt om man kör C.

Visa signatur

citera!