wokub Temat założony przez niniejszego użytkownika |
Indeksowanie tablic » 2017-05-26 10:28:48 Cześć, Mam za zadanie dojść, dlaczego kod: #include <iostream>
int main() { double tablica[ 10 ]; double x; std::cout << & liczba << "\t" << & tablica[ - 1 ] << "\n"; }
wyświetla output: 0x22ff18 0x22ff18 Sprawdzałem, czy to dlatego, że jest -1, ale nie, to po prostu zawsze wyświetla w tym formacie. W poleceniu jest mowa o niepoprawnym indeksowaniu tablic. Jakby ktoś coś widział w tym kodzie, czego ja nie jestem w stanie, byłbym bardzo wdzięczny. |
|
carlosmay |
» 2017-05-26 10:43:20 |
|
michaello94 |
» 2017-05-26 10:46:19 No tak |
|
wokub Temat założony przez niniejszego użytkownika |
» 2017-05-26 10:48:17 Ok, dzięki wielkie. I wszystko jasne. Swoją drogą fajna stronka. A i zamiast liczba miało być x. Po prostu zmieniłem u góry i zapomniałem, u dołu też to zrobić. W końcu output ze znakami xff etc nie do końca jest "liczbą". Znaczy binarnie bodajże jest, ale nie o to mi chodziło :D O i przy okazji mam zadania dot. kompliatorów, to zobaczę różnicę dzięki temu linkowi :D Chwała ci |
|
carlosmay |
» 2017-05-26 11:13:16 Ampersand w obu przypadkach wyświetla adres w pamięci. - system szesnastkowy. |
|
pekfos |
» 2017-05-26 12:07:23 x ma tu ten sam adres co tablica[-1], najwyraźniej zmienne trafiły na stos w dokładnie tej kolejności, w jakiej są napisane w kodzie. Stos rośnie w kierunku malejących adresów, więc x jest po tablicy, ale adres ma niższy, więc w pamięci jest przed pierwszym elementem tablicy. |
|
wokub Temat założony przez niniejszego użytkownika |
» 2017-05-26 18:47:21 A mam jeszcze jedno pytanko. W poleceniu mam, że rezultat jest zależny od kompilatora i mam wytłumaczyć dlaczego, mimo, że praktycznie nie ma różnicy, jakiego użyje na tym wandbox czy u Siebie (MinGW). Czy jest wgl. jakakolwiek różnica? Może ja jestem ślepy. Prawda jest taka, że nie jestem zbyt zaznajomiony w tym systemie szesnastkowym, a to on stanowi output. |
|
Kinexity |
» 2017-05-26 21:05:28 carlosmay już wcześniej o tym wspomniał - to jest UB i dlatego, wynik działania programu zależy od kompilatora. A jeżeli chodzi o system szesnastkowy - skoro uczysz się programować to radzę go ogarnąć. Nie musisz umieć w nim liczyć, lecz lepiej dla ciebie, że będziesz wiedział jak działa. |
|
« 1 » |