(C++) miért működik rosszul ez az egyszerű kód?
Figyelt kérdés
int a[4];
cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4];
for(int i=0; i<5; i++)
{cout<<a[i]<<" ";}
Beírok 5db számot és egy sorral lejebb kiadja a beadott számokat,de az utolsó számjegy valamiért mindig 4.
PL: beirom hogy 10 20 30 40 50 akkor kiadja, hogy: 10 20 30 40 4
Ez mitől van?
2014. aug. 20. 13:12
1/6 A kérdező kommentje:
Megoldottam, azt hittem, hogy mivel a tömbök indexelése 0tól kezdődik akkor t[4] öt elemet tartalmaz.
2014. aug. 20. 13:23
2/6 anonim válasza:
És így? :
int a[5];
cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4];
for(int i=0; i<5; i++)
{
cout<<a[i]<<" ";
}
Eggyel kisebb volt a tömböd, mint amit beolvastál.
3/6 anonim válasza:
Egyébként ha érdekel, az a 4-es mindig az i értéke volt, mert a tömböd mögött volt a memóriában.
4/6 anonim válasza:
#3 így van.
De csak Debug fordításban, illetve kis szerencsével Release-ben.
5/6 anonim válasza:
Tudom, csak úgy mondtam, igazából a szabványban ha jól tudom nincsen benne, hogy hová kell pakolgatni, szóval bármi lehet bárhol akár debugban vagy releaseben is, de erre valahogy mérget vennék, hogy az az volt :D
6/6 anonim válasza:
Debug-ban szándékosan egymás mellé kerülnek a változók. A Debugger mindig egy kellőképpen nagy memória területet foglal, ráadásul inicializálja is a memóriát valami jó kivehető mintával, ezzel is segítve a magát debuggolást.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!