Witajcie
Eksperymentowałem sobie i jakoś tak wyszło że w kodzie wychodziłem poza zakres tablicy statycznej jednak mimo ewidentnego błędu program wykonuje się poprawnie.
Oto kod który obrazuje problem:
#include<iostream>
int main()
{
int tab[10] = {0,1,2,3,4,5,6,7,8,9};
for(int i = 0; i < 12;++i)
{
if(i >= 10)std::cout << "(niepoprawny)";
std::cout << "indeks: " << i << " wartosc: " << tab[i] << std::endl;
}
std::cout << "============" << std::endl;
for(int i = 0; i < 12;++i)tab[i] = i+2;
std::cout << "Po zwiekszeniu wartosci o 2 ..." << std::endl;
std::cout << "============" << std::endl;
for(int i = 0; i < 12;++i)
{
if(i >= 10)std::cout << "(niepoprawny)";
std::cout << "indeks: " << i << " wartosc: " << tab[i] << std::endl;
}
}
Widać ze tablica ma w sobie 10 elementów - od 0 do 9 - jednak o dziwo zapis do elementu o indeksie 10 i 11 oraz odczyt nie powoduje błędu aplikacji.
Może mi ktoś wyjaśnić czemu tak się dzieje?