Skocz do zawartości


Zdjęcie

[C++]Inkrementacja


  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Kazeeny

Kazeeny

    Stały użytkownik

  • 209 postów

Napisano 23 03 2010 - 19:43

W Dev-C++ 4.9.9.2 napisałam taki oto program:
#include <iostream>
using namespace std;

int main()
{   int i=-1;
    int a[10];
    for(int j=0; j<10; j++) a[j]=j;
    for(int j=0; j<10; j++) cout << a[j] << " ";
    cout << "\na[i++] " << a[i++] << endl;
    cout << "i " << i << endl;
    cout << "i++ " << i++ << endl;
    cout << "i " << i << endl;
    system("pause");
    return 0;
}
Czy ktoś mógłby mi opisać krok po kroku, jak on działa? Z tego, co mnie się wydaje, zasada działania inkremetacji przyrostkowej opiera się na zwracaniu "starej" wartości zmiennej inkrementowanej (w przeciwieństwie do inkrementacji przedrostkowej, czyli ++i). To kiedy w końcu zmienia się wartość tej zmiennej?
I jeszcze taka jedna uwaga. W Dev przy wyświetlaniu pierwszy raz a[i++] pojawia się wartość 10, natomiast w Visual Studio jakaś duża ujemna liczba - to też mnie interesuje, skąd takie dziwne wartości są? Tzn. domyślam się, że to przez tę inkrementację -1, ale mimo wszystko jestem ciekawa, co tak właściwie się tam dzieje.
Ach, jeszcze kolejna sprawa. W Dev jak zmieniłam fragment kodu
int a[11];
    for(int j=0; j<11; j++) a[j]=j;
    for(int j=0; j<11; j++) cout << a[j] << " ";
    cout << "\na[i++] " << a[i++] << endl;
To tym razem a[i++] zwraca wartość 11, czyli "jakby odwoływał się" do tego, co jest w zmiennej j.

Użytkownik Katarina edytował ten post 23 03 2010 - 19:48

  • 0

#2 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 23 03 2010 - 23:33

to co pokazuje ci w a[i++] to czysty zbieg okolicznosci, w zaleznosci jak dany kompilator zarzadza pamiecia

i w momencie wywolywania metody jest rowne -1, czyli w rozumieniu metody a[-1]

de facto wskazuje na to miejsce w pamieci poprzedzajace wskaznik a, a ze np Visual Studio tam przetrzymywal wartosc zmiennej j to czysty przypadek

  • 0




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych