int liczby[3] = {4, 8, 15, 16}; printf("%d", liczby[0]); Wskaż, na czym polega błąd w kodzie zapisanym w języku C++.
int liczby[3] = {4, 8, 15, 16}; printf("%d", liczby[0]);Wskaż, na czym polega błąd w kodzie zapisanym w języku C++.
Poprawna jest odpowiedź o zbyt wielu wartościach w liście inicjalizującej. Tablica zadeklarowana jako int liczby[3] ma miejsce na trzy elementy, a w nawiasach klamrowych podano cztery wartości. Kompilator C++ zgłasza wtedy błąd (zbyt wiele inicjalizatorów) i program się nie skompiluje.
Do zapamiętania: wartości może być mniej niż rozmiar - int t[5] = {1, 2}; wypełni pozostałe elementy zerami. Można też pominąć rozmiar, a kompilator policzy go sam: int liczby[] = {4, 8, 15, 16}; utworzy tablicę czteroelementową. Indeksy zaczynają się od 0, więc ostatni element tablicy o rozmiarze n ma indeks n - 1.
Każda z błędnych odpowiedzi opisuje regułę, która w C++ nie obowiązuje. Inicjalizacja tablicy przy deklaracji jest dozwolona i bardzo częsta - zapis int t[3] = {4, 8, 15}; jest w pełni poprawny. Problemem jest tylko liczba wartości, a nie sam sposób zapisu.
Wywołanie printf("%d", liczby[0]) ma dokładnie tyle argumentów, ile potrzeba: jeden znacznik formatu %d i jedną wartość całkowitą. Twierdzenie, że indeksy zaczynają się od 1, to typowa pomyłka osób znających języki z numeracją od jedynki (np. Lua) albo arkusze kalkulacyjne. W C, C++, JavaScripcie, PHP i Javie pierwszy element ma indeks 0, więc liczby[0] to wartość 4. Szukając błędu w deklaracji tablicy, porównaj liczbę w nawiasach kwadratowych z liczbą wartości w klamrach. Gdy liczby się nie zgadzają, błąd leży właśnie tam.